如果Windows服务停止,NserviceBus是否完成消息处理?

时间:2011-11-18 15:17:36

标签: nservicebus

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

如果答案为否,那么我可能会完成一半的工作,并且显示的状态不正确(如果我的程序使用数据库)。

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

如果答案是肯定的,请指出我在源代码中的位置,这些东西会发生。

1 个答案:

答案 0 :(得分:2)

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