JMS и ActiveMQ, как получить уведомление об отключении?

Я использую JMS для общения с ActiveMQ. Мне пришлось отключить аварийное переключение для ActiveMQ, потому что мне нужно справиться с этим самостоятельно.

Поэтому вместо использования: failover // tcp // localhost: 61616 я использовал: tcp // localhost: 61616.

если я закрою сервер ActiveMQ и попытаюсь отправить сообщение, я получу исключение. javax.jms.IllegalStateException: сеанс закрыт

но как я могу получить уведомление, когда соединение с сервером потеряно как можно скорее?

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

Благодарность


person Sebastien Dionne    schedule 05.07.2011    source источник


Ответы (1)


Я не уверен, но TransportListener могу вам помочь.

Вот пример его использования,

connection = new ActiveMQConnectionFactory(brokerUrl).createConnection();
ActiveMQConnection cc = (ActiveMQConnection)connection;
cc.addTransportListener(new YourTransportListener());  

Надеюсь, это поможет вам.

person Nikunj    schedule 05.07.2011
comment
спасибо за Ваш ответ. Я не могу его использовать, потому что это не просто JMS. Я обнаружил, что могу добавить connection.setExceptionListener (new ExceptionListener () {@Override public void onException (JMSException e) {// TODO Заглушка автоматически сгенерированного метода System.out.println (e);}}); для JMSConnection. Я получаю уведомление, когда клиент пытается что-то подтолкнуть: javax.jms.JMSException: java.io.EOFException, но я думаю, что не могу получить что-то более значимое. - person Sebastien Dionne; 05.07.2011
comment
Похоже, я могу выполнить переподключение, когда получаю исключение в ExceptionListener. Я пойду с этим. Спасибо за вашу помощь - person Sebastien Dionne; 05.07.2011