Как я могу распознать отключение ActiveMQ с помощью NMS и С#

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

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

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


person Jonathan Beerhalter    schedule 08.01.2010    source источник
comment
См. мой ответ здесь stackoverflow.com/a/55691202/3057246   -  person Vinod Srivastav    schedule 16.04.2019


Ответы (1)


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

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

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

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

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

person srodriguez    schedule 14.01.2010
comment
Если бы я хотел, как бы я установил безаварийный режим? Извините, с ActiveMQ сложно обнаружить все. - person dudeNumber4; 25.03.2018