2011-11-18 144 views
2

我將nservicebus程序安裝爲windows服務。 當我停止Windows服務時,NserviceBus是否等待,直到當前消息處理程序完成?如果Windows服務停止,NserviceBus是否完成消息處理?

如果答案是否定的,那麼我可能會做一半的工作,並出現錯誤的狀態(如果我的程序使用數據庫)。

我做了一個實驗 - 創建了一個程序,它在接收消息時執行Thread.Sleep(100 * 1000)。 當我在消息處理過程中停止Windows服務時,它會很快停止並且不會等待100秒。所以我認爲答案是否定的。

如果答案是肯定的,請將我指向源代碼中發生這種情況的地方。

回答

2

NSB不會等待,因此當前消息將回滾到隊列。所有的處理程序都在一個事務中運行,因此應該沒有風險進入不一致的狀態。假設你的數據庫已經加入了dtc事務。如果不是的話,那麼您的投注就會不一致。

+0

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

相關問題