JMS 消息侦听器的执行失败,并且未设置错误处理程序
2022-09-01 12:04:51
当我使用Spring收听JMS消息时,我收到了上述错误。
我想知道如何将错误处理程序添加到JMS侦听器中?
当我使用Spring收听JMS消息时,我收到了上述错误。
我想知道如何将错误处理程序添加到JMS侦听器中?
AbstractMessageListenerContainer
上有一个属性:
<bean id="listener" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="errorHandler" ref="someHandler"/>
<property name="destinationName" value="someQueue"/>
<property name="connectionFactory" ref="connectionFactory"/>
</bean>
哪里是实现错误处理程序的bean
:someHandler
@Service
public class SomeHandler implements ErrorHandler {
@Override
public void handleError(Throwable t) {
log.error("Error in listener", t);
}
}
但请注意,根据文档:
此消息侦听器的默认行为 [...] 将在错误级别记录任何此类异常。[...]但是,如果需要错误处理,则可以将 ErrorHandler 策略的任何实现提供给 setErrorHandler(ErrorHandler) 方法。
查看您的日志,也许异常已经记录?
我喜欢它简短而甜蜜!
@Bean
JmsListenerContainerFactory<?> jmsContainerFactory(ConnectionFactory connectionFactory) {
SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setErrorHandler(t -> {
log.error("Error in listener!", t);
});
return factory;
}