3

Rebus Service Bus が次のユース ケースを処理できるかどうか疑問に思っていました。

  • 将来の日付のメッセージをキューに入れる
  • Customer Id: 1000 のようなコンテキストを持つメッセージ ProcessInvoice がある場合、メッセージを実行するハンドラーを 1 つだけ持つことができます。そのため、メッセージが重複した場合、再度処理されることはありません。

ありがとう

4

1 に答える 1

1

確かに - Rebusは将来bus.Deferのメッセージを送信できTimeSpanます - たとえば、メッセージの配信を特定の日付に延期するには、次のようにします。

var delay = utcTimeOfWhenToDeliverTheMessage - DateTime.UtcNow;

bus.Defer(delay, messageToPostpone);

これには、タイムアウト マネージャが設定されている必要があります。次の方法でタイムアウトマネージャーを構成できます

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

Rebus構成スペルで。

重複が配信される可能性がある場合でも、特定のメッセージが 1 回だけ処理されることを保証したい場合は、考慮すべきことがいくつかあります。処理されたメッセージの ID などを追跡する必要がある場合もあります

于 2014-11-15T15:51:51.523 に答える