2012-04-03 9 views
1

MSMQのMaxtriesが5である状況があります。5回後、nservicebusは、定義したエラーキューにメッセージを送信します。今私はこれが起こったときにいくつかのさらなるアクションを実行したい(私はいくつかのプロセスのステータスをErrorに更新しなければならない) これらのエラーキューを読むためにSagaクラスのハンドラを書くことは可能ですか?アドバンス ハリスNServiceBus Sagaでエラーキューのハンドラを書き込む方法は?

答えて

2

おかげで、あなたは2.xのを使用している場合は、エラー・キューは、その入力キューである別のエンドポイントを書いて検討する必要があります。これの欠点は、メッセージがキューから出ることです。それでもそれらを保存したいと仮定した場合、それらをデータベースなどのストレージにプッシュする必要があります。

メッセージをチェックするためにエラーキューをポーリングし、適切なステータスを更新するSagaを作成することもできます。キューをチェックするたびに、別のタイムアウトを要求する必要があります。

3.0では、例外をより詳細に制御でき、独自の方法でエラーを処理できます。インターフェイスIManageMes​​sageFailuresを実装すると、そこで作業を行うことができます。

+0

ありがとうございました。最初にNServiceBus 3.0をインストールしてから、何が最善の解決策であるかを見てみましょう。 – user993104

0

Adamが提供するソリューションの代わりに、メッセージがエラーキューに送信されたときに発生するServiceControlによって生成されたイベントをサブスクライブすることができます。これに関する公式のドキュメントはこちらhttp://docs.particular.net/servicecontrol/contracts

もう1つのアプローチは、ここに記載されている通知APIです:http://docs.particular.net/nservicebus/errors/subscribing-to-error-notifications。エンドポイントで直接「MessageSentToErrorQueue」などの特定のイベント(イベント・メッセージではない)をサブスクライブすることができるため、エラー・キューを使用する必要はありません。

関連する問題