use*_*414 23 java spring jms spring-jms
当我使用Spring收听JMS消息时,我收到了上述错误.
我想知道如何将Errorhandler添加到JMS侦听器中?
Tom*_*icz 19
有一个属性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>
Run Code Online (Sandbox Code Playgroud)
someHandlerbean 在哪里实现ErrorHandler:
@Service
public class SomeHandler implements ErrorHandler {
@Override
public void handleError(Throwable t) {
log.error("Error in listener", t);
}
}
Run Code Online (Sandbox Code Playgroud)
但请注意,根据文档:
此消息侦听器的默认行为[...]将在错误级别记录任何此类异常.[...]但是,如果需要进行错误处理,则可以向setErrorHandler(ErrorHandler)方法提供ErrorHandler策略的任何实现.
查看您的日志,可能已经记录了异常?
没有xml配置。我在 ApplicationContext 中执行了以下操作。
@Bean
JmsListenerContainerFactory<?> jmsContainerFactory(ConnectionFactory connectionFactory,
SomeHandler errorHandler) {
SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setErrorHandler(errorHandler);
return factory;
}
// From Tomasz answer
@Service
public class SomeHandler implements ErrorHandler {
@Override
public void handleError(Throwable t) {
log.error("Error in listener", t);
}
}
Run Code Online (Sandbox Code Playgroud)
我喜欢它又短又甜!
@Bean
JmsListenerContainerFactory<?> jmsContainerFactory(ConnectionFactory connectionFactory) {
SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setErrorHandler(t -> {
log.error("Error in listener!", t);
});
return factory;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37110 次 |
| 最近记录: |