2014-11-14 35 views
2

我想知道如果滷麪服務總線可以處理以下用例:滷麪 - 遞延信息,只有一個消息處理程序

  • 隊列消息未來日期
  • 如果有一個消息ProcessInvoice像客戶Id:1000這樣的上下文,我們是否可以只有一個處理程序執行消息。所以如果消息被複制,它不會再被處理。

由於

回答

1

當然 - Rebus的可以bus.Defer消息一些TimeSpan到未來 - 例如推遲的消息給一些特定的日期交貨,這樣的事情可以做:

var delay = utcTimeOfWhenToDeliverTheMessage - DateTime.UtcNow; 

bus.Defer(delay, messageToPostpone); 

這就要求超時經理已配置。您可以通過配置超時管理器

Configure.With(...) 
    .(...) 
    .Timeouts(t => t.(...)) 

中的Rebus配置法術。

如果你想保證一個給定的消息只處理一次,即使可能傳送重複數據,也需要考慮幾件事情 - 很難告訴你處理它的最簡單方法,因爲有時它可能很容易只需執行idempotent,其他時間您需要跟蹤處理的消息的ID等。