2010-01-08 159 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个事件,你就能发现,当你的经纪人是下降(除其他有用的信息,例如当它恢复连接,或者当他遇到一个例外)

注:如果您在故障转移模式,这些例外将被故障转移传输层吞并并自动处理。因此你不会收到任何这些事件。