2012-01-06 23 views
2

使用NServiceBus與NHibernate傳奇persister,如何可以避免重複傳說時,可能會收到一條消息不止一次?NServiceBus Sagas - 至少一次交付

這裏有一些解決方案,我認爲到目前爲止:

  1. ,一定不要調用MarkAsComplete(),因此重複數據刪除以通常的方式由傳奇本身處理。

  2. 實現我自己的傳奇persister,它存儲完成傳奇的關聯ID,因此重複/附加消息被忽略。

回答

2

問題是什麼會導致消息被多次接收 - 是由於重試了同一消息(就像在DB中存在死鎖的情況下一樣)?這些類型的重試(導致相同的消息被多次「處理」)已經由NServiceBus的事務性質處理。

如果情況是由於某些其他端點多次發送了該消息,那麼建議的方法是查看您可以做些什麼來阻止發送方。如果這是不可能的,那麼是的,一個從未完成的傳奇可以作爲你的過濾器。

+0

感謝您的稱重。我能夠阻止消息在發送端多次發送。很高興知道解決方案1是一個可行的選擇。 – Joe 2012-01-09 22:14:03

相關問題