2012-04-13 11 views
2

NSerivceBusを使用してシステムを構築していますが、特定の時間枠でリモートハンドラにメッセージを送信する必要があります。これまでは、すべてのメッセージを処理キューに配置し、そこからリモートハンドラの可用性をチェックしました。ハンドラが利用できない場合は、境界にメッセージを送信しません。私はNServiceBus処理メッセージ後で

Bus.HandleCurrentMessageLater() 

を使用していますが、NSBは右後にしようとし続けますこれを行うにしてください。他のリスナーが数分間で起動して実行されるようなものではありませんが、数時間の停止ウィンドウがある可能性があるため、これは正確には効率的ではありません。

バスにしばらくの間にメッセージを再試行する方法がある場合、または再試行を続けずに次の再試行までに時間を待つことをお勧めします。私はSagasを使用しています。単純なコマンド/ハンドラのメッセージです。

答えて

5

バージョン3.0で一定の時間が経過した後に、Bus.Deferを使用してメッセージを戻すことができます。

+0

hello udi、私はnservicebus 5.0と5.0 bus.createinstance <>メソッドで作業していますので、同期呼び出しを行うために、バージョン4.6.5でbus.createinstanceを使用していましたが、今は移行できませんより高いバージョンに私のコードは、私が同じ要求に返信を返すために可能な方法は、私が望む呼び出しが同期する必要があります知っています。 – Friyank

+0

CreateInstanceが廃止された理由は、実際には必要ないためでした。Bus.Reply (メッセージを作成するためにlambda)を実行できます。 –

関連する問題