NServiceBus はメッセージが特定の順序で処理されることを保証しないため、送信者から送信された順序でメッセージを処理する方法を見つけようとしています。
送信者は、createOrder および reviseOrder コマンドを発行するオーダー システムです。送信者は、ユーザーが同じ注文に複数のリビジョンを送信できるようにするため、リビジョン 4 とリビジョン 3 を同時にキューに入れることができます。各リビジョンにはリビジョン番号とそれに関連付けられた理由コードがあり、ビジネス ロジックを駆動するため、リビジョンまたは少なくともその理由部分を無視することはできません。
私が持っていたいくつかのアイデアを以下にリストします-
リビジョン番号を宛先レコードとともに保存します。送信者は、各リビジョン メッセージでリビジョン番号を送信します。ハンドラーは送信者と宛先のリビジョン番号を比較し、一致する場合はレコードが更新され、そうでない場合はメッセージがキューの最後に置かれます。このアプローチでは、リビジョン 2 メッセージが失敗してエラー キューに入ると、リビジョン 3 は処理されません。
送信者は、すべてのリビジョン メッセージですべてのリビジョンのすべての理由コードの履歴を送信します。そのため、リビジョン 2 メッセージが失敗した場合、リビジョン 3 メッセージにすべての理由コードが含まれます。これらの理由コードは宛先に記録されますが、以前のリビジョンの理由コードに関連付けられたビジネス ロジックは発生しない可能性があります。
このシナリオをどのように設計しますか?
また、失敗したリビジョン メッセージを処理する方法についてのアイデアはありますか?
いくつかのガイダンスは本当に感謝しています。
ありがとう。