发生此异常时,JMS 连接未重新连接:
2014-08-16 10:51:36,724 WARN [TIBCO EMS TCPLink Reader (Server-12486338)] connection.CachingConnectionFactory - Encountered a JMSException - resetting the underlying JMS Connection
javax.jms.JMSException: Connection has been terminated
at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:502)
at com.tibco.tibjms.TibjmsConnection._onDisconnected(TibjmsConnection.java:2286)
at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventDisconnected(TibjmsConnection.java:341)
at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:320)
at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:247)
2014-08-16 10:51:40,286 WARN [TIBCO EMS TCPLink Reader (Server-12494013)] connection.CachingConnectionFactory - Encountered a JMSException - resetting the underlying JMS Connection
javax.jms.JMSException: Connection has been terminated
at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:502)
at com.tibco.tibjms.TibjmsConnection._onDisconnected(TibjmsConnection.java:2286)
at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventDisconnected(TibjmsConnection.java:341)
at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:320)
at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:247)
完全相同的错误发生了几秒钟,我想知道 Spring 是否尝试重新连接并在两次尝试后放弃。
我检查了Spring源代码,没有在CachingConnectionFactory或其父类SingleConnectionFactory的onException()方法中找到重新连接逻辑。我们使用的是 spring-jms 3.1.2,但我也查看了最新的 Spring 源代码。
感谢您的帮助。
最佳答案
我遇到了类似的问题,一旦发生异常(当 TIBCO 主服务器停止并切换到辅助 TIBCO 服务器时),DefaultMessageListenerContainer 就无法重新连接。
我正在使用 SingleConnectionFactory,它导致了这个问题。
使用 java:comp/env/jms/TIBCOConnectionFactory 直接从 Websphere 获取 connectionFactory 解决了此问题。
关于Spring JMS CachingConnectionFactory 似乎不会在异常时重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25387816/