Как распознать отключение ActiveMQ с помощью NMS и C # - PullRequest
4 голосов
/ 08 января 2010

У меня есть издатель и подписчик C #, которые общаются друг с другом с помощью ActiveMQ и NMS. Все работает нормально, кроме того, что я не знаю, когда ActiveMQ выходит из строя. Это особенно плохо для потребителя. Они перестают получать данные, но, кроме того, что данные перестают отображаться, никаких ошибок или событий не возникает.

Есть ли способ использовать NMS (в частности, Apache.NMS.IConnection или объекты Apache.NMS.ISession)

Я скачал реализацию, которую я использую, из Spring, но я не использую какие-либо конкретные реализации Spring, все, что я использую, находится в пространствах имен Apache.NMS и Apache.NMS.ActiveMQ.

1 Ответ

3 голосов
/ 14 января 2010

Ну, прошло много времени с тех пор, как был задан этот вопрос, но теперь у вас есть несколько доступных событий:

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

где m_connection - это объект IConnection.

С этими 3 событиями вы сможете найти, когда ваш брокер не работает (среди другой полезной информации, например, когда он возобновляет соединение или когда он встречает исключение)

Примечание. Если вы находитесь в режиме отработки отказа, эти исключения будут поглощены транспортным уровнем отработки отказа и автоматически обработаны ими. Следовательно, вы не получите ни одно из этих событий.

...