Java 从未对JMSException调用JMS CachingConnectionFactory OneException方法
我正在使用ApacheCamel和Spring从Java服务发送消息。我需要重置JMS连接,以防在exchange发生任何错误。我使用下面的代码来实现我的目标Java 从未对JMSException调用JMS CachingConnectionFactory OneException方法,java,apache-camel,spring-jms,qpid,jms-topic,Java,Apache Camel,Spring Jms,Qpid,Jms Topic,我正在使用ApacheCamel和Spring从Java服务发送消息。我需要重置JMS连接,以防在exchange发生任何错误。我使用下面的代码来实现我的目标 try { producerTemplate.sendBody(endPoint, bytes); } catch (final RuntimeCamelException exception) { LOGGER.error("Exception occured in sendBody", exception.getMes
try
{
producerTemplate.sendBody(endPoint, bytes);
}
catch (final RuntimeCamelException exception)
{
LOGGER.error("Exception occured in sendBody", exception.getMessage(), exception);
handleError(); // handle error here.
}
在camel上下文中,我使用异常侦听器定义了CachingConnectionFactory,并使reconnectOnException=true
执行在catch块内进行,但从未调用SingleConnectionFactory的OneException(),即使定义了exceptionListener。其思想是调用resetConnection()(在OneException内部)来重置JMS连接。实现
ExceptionListener
,并将异常侦听器定义作为属性添加到spring连接工厂testCachingConnectionFactory
例如,创建异常侦听器类(组件)jmsceceptionListener
:
public class JmsExceptionListener implements ExceptionListener {
@Override
public void onException(JMSException exception) {
// what ever you wanna do here!
}
}
然后为jmsceptionListener
添加bean定义:
public class JmsExceptionListener implements ExceptionListener {
@Override
public void onException(JMSException exception) {
// what ever you wanna do here!
}
}
然后将定义添加为异常侦听器属性:
而不是您在配置中使用的:
实现异常侦听器
,并将异常侦听器定义作为属性添加到spring连接工厂testCachingConnectionFactory
例如,创建异常侦听器类(组件)jmsceceptionListener
:
public class JmsExceptionListener implements ExceptionListener {
@Override
public void onException(JMSException exception) {
// what ever you wanna do here!
}
}
然后为jmsceptionListener
添加bean定义:
public class JmsExceptionListener implements ExceptionListener {
@Override
public void onException(JMSException exception) {
// what ever you wanna do here!
}
}
然后将定义添加为异常侦听器属性:
而不是您在配置中使用的:
CachingConnectionFactory的父类SingleConnectionFactory本身实现ExceptionListener…因此我们不需要创建任何自定义类。CachingConnectionFactory的父类SingleConnectionFactory本身实现ExceptionListener…因此我们不需要创建任何自定义类。