Spring JMS:为@JmsListener注释方法设置ErrorHandler

时间:2016-11-17 12:12:54

标签: java spring spring-boot jms spring-jms

我正在使用@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

1 个答案:

答案 0 :(得分:11)

使用@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