Spring JMS CachingConnectionFactory 似乎不会在异常时重新连接

标签 spring exception jms reconnect

发生此异常时,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/

相关文章:

python-2.7 - python : argparse throwing value error when combining positional and optional argument

java.rmi.ServerException : RemoteException occurred in server thread (ClassNotFoundException)

java - 与 JBOSS EAP 6.2 中嵌入的 HornetQ 主题的连接失败

java - ActiveMQ:如何在使用临时队列时处理代理故障转移

java - 使用 XML 配置禁用 Websocket 中的 CSRF 保护

java - 使用 WAS7 进行 Maven 安装

c++ - 在c++中发生任何异常的情况下运行通用代码

javax.jms.MessageConsumer 在消费者关闭时挂起接收

来自依赖 Spring 项目的 Java 配置 bean 未初始化

spring - @Profile 导致无法启动 EmbeddedWebApplicationContext