Rebus Service Bus が次のユース ケースを処理できるかどうか疑問に思っていました。
- 将来の日付のメッセージをキューに入れる
- Customer Id: 1000 のようなコンテキストを持つメッセージ ProcessInvoice がある場合、メッセージを実行するハンドラーを 1 つだけ持つことができます。そのため、メッセージが重複した場合、再度処理されることはありません。
ありがとう
Rebus Service Bus が次のユース ケースを処理できるかどうか疑問に思っていました。
ありがとう
確かに - Rebusは将来bus.Defer
のメッセージを送信できTimeSpan
ます - たとえば、メッセージの配信を特定の日付に延期するには、次のようにします。
var delay = utcTimeOfWhenToDeliverTheMessage - DateTime.UtcNow;
bus.Defer(delay, messageToPostpone);
これには、タイムアウト マネージャが設定されている必要があります。次の方法でタイムアウトマネージャーを構成できます
Configure.With(...)
.(...)
.Timeouts(t => t.(...))
Rebus構成スペルで。
重複が配信される可能性がある場合でも、特定のメッセージが 1 回だけ処理されることを保証したい場合は、考慮すべきことがいくつかあります。処理されたメッセージの ID などを追跡する必要がある場合もあります。