Spring JMS:为@JmsListener注解的方法设置ErrorHandler
Posted
技术标签:
【中文标题】Spring JMS:为@JmsListener注解的方法设置ErrorHandler【英文标题】:Spring JMS : Set ErrorHandler for @JmsListener annotated method 【发布时间】:2017-03-31 23:26:36 【问题描述】:我正在使用@JmsListener
注释方法监听JMS 消息,如下所示。
@JmsListener(destination="exampleQueue")
public void fetch(@Payload String message)
process(message);
当这个方法执行导致异常时,我得到一个警告日志
Execution of JMS message listener failed, and no ErrorHandler has been set.
如何设置ErrorHandler
来处理此案。我正在使用 spring boot 1.3.3.RELEASE
【问题讨论】:
在这里回答:***.com/questions/8922532/… 谢谢@sarahTheButterFly。通过在提供的链接中参考 Kuchi 答案得到解决方案。我已经调整了答案以适应我的情况。我在下面发布我的答案 【参考方案1】:在使用 @EnableJms
、@JmsListener
等注解来处理 Spring JMS 时,可以像这样设置 ErrorHandler
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(ConnectionFactory connectionFactory, ExampleErrorHandler errorHandler)
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setErrorHandler(errorHandler);
return factory;
@Service
public class ExampleErrorHandler implements ErrorHandler
@Override
public void handleError(Throwable t)
//handle exception here
更多详情请点击此处:Annotation-driven listener endpoints
【讨论】:
以上是关于Spring JMS:为@JmsListener注解的方法设置ErrorHandler的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot JMS 侦听器:无法刷新目标的 JMS 连接
如何在启动时以编程方式禁用 Spring @JmsListener