2017-08-01 9 views
0

C#で2つのWindowsサービスがあります。 サービス1は、メッセージをRabbitMQキューにパブリッシュします。 サービス2は、RabbitMQキューにサブスクライブします。 サービス2は、TCPサーバーに接続し、RabbitMQから受信したメッセージをこのサーバーに送信します。 私の質問は、このメッセージを消費するサービス2が何らかのエラー(主にSocketExceptionがサーバーに接続できない場合)のために失敗したときに、サービス1がキューにメッセージを公開しないようにする方法です。 ポインタが本当に役に立ちます。 詳細情報が必要な場合はお知らせください。RabbitMQ - Subscriberサービスが何らかのエラーで失敗したときにPublisherサービスを停止する方法

ありがとうございました。それにアプローチする方法についての私の(独断)アイデアの

答えて

0

わずか数:

  1. 1つのオプションは、2 間hartbeatメッセージングシステムのいくつかの並べ替えを作成し、サービスがOKであるかどうかを確認することですあなたは1つのチェックをした後、次の前に、これは起こっているsomckingsの欠点を持っています 。

  2. もう再び、それはサービス2 への送信を停止し、サービス2は例外に戻っサービス1にメッセージを送ることによってフラグを切り替える持っているサービス1にロックフラグを追加すること が、このためだろう通話が再び開始されるときに確認する必要があります。また、 はサービス1をON状態に戻します。

  3. あなたは、これが サービス2をフラッディングないの上面を持つことになり、サービス1に指数バックオフを追加することができ、また、小切手やメッセージのピンポンを避けるだろう、欠点は、バックオフ時間が本当に成長でき ということです大。

乾杯

関連する問題