2010-01-08 68 views
2

我有一個C#發佈者和訂閱者使用ActiveMQ和NMS相互交談。一切正常,除非我無法知道ActiveMQ何時關閉。這對消費者來說尤其不利。他們停止獲取數據,但除了數據不再顯示的事實外,沒有發生錯誤或事件。如何識別使用NMS和C的ActiveMQ斷開連接#

是否有使用NMS(格外Apache.NMS.IConnection或Apache.NMS.ISession對象)

我下載我是從春天使用實現,但我不使用任何特定的方式Spring實現,我使用的所有東西都在Apache.NMS和Apache.NMS.ActiveMQ命名空間中。

回答

2

好吧,它已經有很多,因爲這個問題已經被問過,但現在你有幾個可用的事件:

m_connection.ConnectionInterruptedListener += new ConnectionInterruptedListener(OnConnectionInterruptedListener); 
m_connection.ConnectionResumedListener += new ConnectionResumedListener(OnConnectionResumedListener); 
m_connection.ExceptionListener += new ExceptionListener(OnExceptionListener); 

其中m_connection是IConnection對象。

有了這3個事件,你就能發現,當你的經紀人是下降(除其他有用的信息,例如當它恢復連接,或者當他遇到一個例外)

注:如果您在故障轉移模式,這些例外將被故障轉移傳輸層吞併並自動處理。因此你不會收到任何這些事件。