SimpleMessageListenerContainer не удалось переподключиться при отработке отказа брокера ems - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть 2 приложения прослушивания jms, одно приложение использует DefaultMessageListenerContainer, а другое приложение SimpleMessageListenerContainer

Приложение с DefaultMessageListenerContainer смогло восстановить соединение при отказе брокера EMS, вот журнал

Setup of JMS message listener invoker failed for destination 'SOME.TOPIC.T' - trying to recover. Cause: Connection is closed
Could not refresh JMS Connection for destination 'SOME.TOPIC.T' - retrying using FixedBackOff{interval=5000, currentAttempts=0, maxAttempts=unlimited}. Cause: Failed to connect to any server at: tcp://localhost:8285,tcp://localhost:8286
Could not refresh JMS Connection for destination 'SOME.TOPIC.T' - retrying using FixedBackOff{interval=5000, currentAttempts=1, maxAttempts=unlimited}. Cause: Failed to connect to any server at: tcp://localhost:8285,tcp://localhost:8286

Приложение с SimpleMessageListenerContainer было не смогло переподключиться при отработке отказа брокера EMS, вот журнал

[TIBCO EMS TCPLink Reader (Server-109365)] INFO  org.springframework.jms.listener.SimpleMessageListenerContainer - Trying to recover from JMS Connection exception: javax.jms.JMSException: Connection has been terminated
[TIBCO EMS TCPLink Reader (Server-109366)] ERROR org.springframework.jms.listener.SimpleMessageListenerContainer - Encountered non-recoverable JMSException
javax.jms.JMSException: Connection has been terminated
    at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:659) ~[tibjms-8.3.0.jar!/:?]
    at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2118) [tibjms-8.3.0.jar!/:?]
    at com.tibco.tibjms.TibjmsConnection._onDisconnected(TibjmsConnection.java:2487) [tibjms-8.3.0.jar!/:?]
    at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventDisconnected(TibjmsConnection.java:367) [tibjms-8.3.0.jar!/:?]
    at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:328) [tibjms-8.3.0.jar!/:?]
    at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259) [tibjms-8.3.0.jar!/:?]

Оба подключены к одному и тому же экземпляру брокера. Как заставить слушатель SimpleMessageListenerContainer переподключиться к исключениям JMS?

1 Ответ

0 голосов
/ 14 ноября 2018

Простой контейнер ... эээ ... Простой.

Делается только одна попытка восстановить соединение.

Контейнер по умолчанию более сложный и настроен на BackOff (по умолчанию каждые 5 секунд для бесконечных попыток).

Используйте контейнер по умолчанию, если вам нужна эта сложность, но она должна быть транзакционной, чтобы избежать возможности потери сообщения - см. Javadocs.

...