外部イベントが発生していないため、特定のメッセージが処理されないNServiceBusアプリケーションがあります。この他のイベントはNSBイベントではないので、サガを適切に実装することはできません。NServiceBus遅延メッセージ処理
しかし、(外部イベントが発生するまでループを引き起こす)メッセージを再キューイングするのではなく、メッセージを別のメッセージ(DelayMessage)にラップして代わりにキューに入れます。 DelayMessageは、別のサービスによって取得され、再試行間隔が切れるまでデータベースに格納されます。この時点で、遅延サービスはメッセージを元のキューに再キューイングし、別の試みを行うことができます。
ただし、この外部イベントがまだ発生していない場合は、複数回発生する可能性があります。その場合でも、メッセージが発生する往復回数を制限したいと考えています。つまり、DelayMessageにはMaxRetriesプロパティがありますが、遅延サービスが再試行のために元のメッセージをキューに入れたときに失われます。
その他のオプションはありますか?私はこの問題に対する全く異なる解決策があることを受け入れてうれしいです。
うわー、マン自身 - ありがとう!私は本当にサガを使用することはできませんが、私は考えていません。メッセージは1つしかありません。処理できるようになるには、データベースにデータが必要です。実際には私が佐賀に組み立てることができるメッセージは2つありません。データは従来のストアドプロシージャによって作成されていますが、NSBを使用してそれを参照する追加データを追加しています。 –
次に、砂漠のタイムアウトを使用して、データベースにデータがあるかどうかを確認します。単純なポーリングメカニズムを提供します。データがない場合は、別のタイムアウトを要求します。 –