2011-11-18 116 views
2

我将nservicebus程序安装为windows服务。 当我停止Windows服务时,NserviceBus是否等待,直到当前消息处理程序完成?如果Windows服务停止,NserviceBus是否完成消息处理?

如果答案是否定的,那么我可能会做一半的工作,并出现错误的状态(如果我的程序使用数据库)。

我做了一个实验 - 创建了一个程序,它在接收消息时执行Thread.Sleep(100 * 1000)。 当我在消息处理过程中停止Windows服务时,它会很快停止并且不会等待100秒。所以我认为答案是否定的。

如果答案是肯定的,请将我指向源代码中发生这种情况的地方。

回答

2

NSB不会等待,因此当前消息将回滚到队列。所有的处理程序都在一个事务中运行,因此应该没有风险进入不一致的状态。假设你的数据库已经加入了dtc事务。如果不是的话,那么您的投注就会不一致。

+0

Thx。这是我需要的答案。 – struhtanov