2017-08-01 47 views
0

我在C#中有2個窗口服務。 服務1將消息發佈到RabbitMQ隊列。 服務2訂閱RabbitMQ隊列。 服務2還連接到TCP服務器,並將它從RabbitMQ收到的消息發送到此服務器。 我的問題是,是否有任何方法來阻止服務1發佈消息到隊列中,當服務2使用此消息由於某些錯誤而失敗(大多數是SocketException,如果它無法連接到服務器)。 任何指針都會非常有幫助。 如果需要更多信息,請讓我知道。RabbitMQ - 當訂閱服務失敗並出現一些錯誤時如何停止發佈服務

在此先感謝。

回答

0

只是對如何處理這幾個我(自以爲是)的想法:

  1. 一種選擇是創建某種兩個 之間hartbeat郵件系統,並檢查服務是OK的間隔,這有一些缺點發生 你做了一個檢查後,在下一個。

  2. 另一個辦法是添加到服務1鎖定標誌爲具有它停止發送到服務2 和由具有服務2發送一個消息返回到服務1上的異常, 切換標誌但對於這個再次上您需要檢查電話何時重新開始工作的時間間隔,並且將服務1切換回開啓狀態。

  3. 您可以添加指數退避到服務1,這將有不充斥 服務2的上攻,也將避免檢查和消息的乒乓,不足之處是 退避時間才能真正成長大。

乾杯

相關問題