メッセージの再試行を遅らせるためにNServiceBusを構成/コーディングする最適な方法は何ですか?
デフォルトの構成では、再試行は、構成ファイルで定義された試行回数までほぼ即座に行われます。理想的には、1時間後に再試行したいなど.
また、どのように機能しHandleCurrentMessageLater()
ますか?アスペクトとは何Later
を指していますか?
メッセージの再試行を遅らせるためにNServiceBusを構成/コーディングする最適な方法は何ですか?
デフォルトの構成では、再試行は、構成ファイルで定義された試行回数までほぼ即座に行われます。理想的には、1時間後に再試行したいなど.
また、どのように機能しHandleCurrentMessageLater()
ますか?アスペクトとは何Later
を指していますか?
NSB 再試行は、デッドロックなどの一時的な問題を解決するためにあります。より長い再試行は、エラー キューを監視し、好きな間隔でソース キューに戻す別のプロセスを作成することで、より適切に処理されます。NSB に付属のReturnToSourceQueue.exeを参照してください。
編集: NServiceBus はこれをサポートするようになりました。これをSecond Level Retriesと呼びます。詳細についてはhttp://docs.particular.net/を参照してください。
NServiceBus 3.2.1 の時点で、メッセージが連続して失敗した場合にバックオフ遅延を処理するためのすぐに使えるソリューションを提供します。以前の既存の再試行メカニズムは、データベースのデッドロック、迅速な自己修復ネットワークの問題などのケースを処理するために、引き続き遅延なく障害を再試行します。
メッセージが構成された回数再試行されると、メッセージは「第 2 レベルの再試行」キューに移動されます。このキューは、以下で構成されているように、10、20、および 30 秒の遅延後に再試行され、メッセージは構成されたエラー キューに移動されます。これらの値は、ご使用の環境により適したものに自由に変更できます。
このリンクをチェックすることもできます: http://docs.particular.net/nservicebus/second-level-retries
これは、NServiceBus に再試行遅延が含まれていない理由に関するブログ投稿です。これは、分散システム アーキテクチャのコースで Udi にまったく同じ質問をした後に書いたものです。
NServiceBus の再試行: バックオフ遅延がないのはなぜですか?
エラー キュー モニター/再試行エンドポイントの構築に関連するいくつかのポイントをカバーするディスカッション スレッドを以下に示します。
http://tech.groups.yahoo.com/group/nservicebus/message/10964
HandleCurrentMessageLater() に関しては、現在のメッセージをキューの最後に戻すだけです。他に待機中のメッセージがない場合は、すぐに再処理されます。