2013-10-02 28 views
0

我有以下情形,其中在佐賀NServiceBus 4.03,Bus.Send緊隨其後的錯誤條件

方案1

Bus.Send<SendEmail>(message); 
Data.Status = "email send requested"; 

如果什麼數據庫關閉的那一刻,

  • 會發送消息嗎?
  • 如果是,那麼重試(FLR/SLR)會觸發,它會再次發送消息?

Scenario2

Bus.Send<SendEmail>(message1); 
some logic/mappers to build up messsage2 // what if this line blows up...? 
Bus.Send<SendEmail>(message2); 
  • 將被髮送的消息?

回答

0

在場景1中,如果傳奇數據作爲處理觸發傳奇的消息的一部分加載之後,傳奇在數據庫中持續崩潰,則不會發送SendEmail消息,觸發了這個傳奇將回滾。

請注意,這並不是說調用Data.Status =「...」會失敗,因爲這只是更新了之後保留的內存數據結構。

對於場景2,您必須更加清楚:是作爲處理髮送消息的一部分調用的炸彈的邏輯,還是在該線路之後調用的邏輯Bus.Send (信息) ?

UPDATE

既然你在方案2中描述的邏輯正在發生的事情是處理一些其他的消息,只要你還沒有關閉您的端點,默認的事務性,則結果除非整個過程成功,否則不會發送消息。

+0

情景2:一些邏輯被調用.. – Miral

+0

@Miral,如果你想要我的情景2的幫助,我需要更多的信息。方案2中的 –

+0

,我有一些映射器爲消息構建數據。 更新了實際問題,請參閱 – Miral