2017-03-23 8 views
1

私はrebus実装でMSMQトランスポートを使用しています。ハンドルRebus MSMQキュー削除

BuiltinHandlerActivator handlerActivator; 
this.handlerActivator.Handle<TransportMessage>  
(this.HandleTransportMessageAsync); 

var bus = Configure.With(this.handlerActivator) 
      .Transport(t => t.UseMsmq(this.SenderName)) 
      .Routing(r => r.TypeBased().AddEndpointMappingsFromAppConfig()) 
      .Start(); 

私はいくつかのいずれかが誤っスヌープ/ COMPMGMT.MSCを使用してメッセージ・キューを削除した場合に例外/エラーを処理したい:以下はREBUSサービスを開始するためのコードです。私はメッセージキューイングでは、手動でMSMQメッセージキューを削除すると

は、我々は

REBUSワーカーキューが削除されたテキストにエラーが発生する - これ以上のメッセージ

を受信しません。

だから、知りたいRebusでこの例外を処理し、コールバックや他の方法で供給することは可能ですか?

Rebus.MSMQ名前空間にMsmqTransportというクラスがあり、メソッドAddQueueCallbackが同様のコールバックを提供することがわかりました。私はRebus/MSMQの初心者ですから、これを使う方法を理解することはできません。どんなサポートも役に立ちます。

答えて

1

Rebusエンドポイントの入力キューまたはエラーキューが実行中に削除された場合、それらを戻す手助けはありません。

REBUS (そのトランスポート実装で、そして、あなたのケースで - あなたは正しく考え出したとして - MsmqTransportクラス) - もちろん、このような状況を扱うことができるが、私(および他のトランスポートの貢献者は)考えを持っている必要がありますある時点でそれを行う必要はないと考えていました。実行時にキューが突然消えてしまうのは、まれなシナリオでしょう。

入力キューが誤って削除された場合、エンドポイントが機能し続けることを望んでいません。ログにエラーがあり、赤色のライトが点滅していると思われます。製造。

システムの実行中にキューを削除しないことをお勧めします。マシン上でRebus Snoopを使用して誤ってキューを削除した場合は、エンドポイントを再起動するだけですべてが正常に戻ります。ところでAddQueueCallback方法は、例えば、私は特定のエラーのために似た何かをすることは可能であろうと思います...自動的に作成されたキュー上のユーザー権限をカスタマイズすることも可能になるよう添加し、


「何もありません!! 1」シナリオのように。これが欠落していると思われる場合は、問題を作成して提案する必要があります。here

+0

お返事ありがとうございます。もう一度確認したいのですが、この例外を処理することはできません(編集で述べたように簡単なメッセージを表示するには)?もう一つのことバックグラウンドタイマーワーカーでMsmqUtil.QueueExistsを使用して、ユーザーフレンドリーなメッセージが表示されない場合にキューが存在するかどうかを確認できますか? –

+0

はい:) :) :) :) – mookid8000

+0

(StackOverflowの15文字分の制限に達するためにそこに多くの笑顔を追加する必要がありました.... :)) – mookid8000

関連する問題