1

NServiceBusアプリケーションがあり、外部イベントが発生していないために特定のメッセージが処理されない場合があります。この他のイベントはNSBイベントではないため、sagasを適切に実装できません。

ただし、メッセージを再キューイングするだけでなく(外部イベントが発生するまでループが発生します)、メッセージを別のメッセージ(DelayMessage)でラップし、代わりにキューイングします。DelayMessageは別のサービスによって取得され、再試行間隔が終了するまでデータベースに配置されます。その時点で、遅延サービスはメッセージを元のキューに再キューイングするため、別の試行を行うことができます。

ただし、その外部イベントがまだ発生していない場合、これは複数回発生する可能性があります。それが発生しない場合でも、メッセージの往復回数を制限したいと思います。これは、DelayMessageにMaxRetriesプロパティがあることを意味しますが、遅延サービスが再試行のために元のメッセージをキューに入れると、それは失われます。

他にどのようなオプションがありませんか?この問題にはまったく異なる解決策があることを喜んで受け入れます。

4

1 に答える 1

4

最初のメッセージを保存し、2 番目のメッセージが到着するまでそれを保持するサガを実装することを検討してください。また、2 番目のメッセージが失われた場合などにプロセスが無期限に待機しないように、saga でタイムアウトを開始することもできます。

于 2009-08-21T19:16:33.583 に答える