2016-11-17 426 views
4

我正在使用@JmsListener註釋的方法偵聽JMS消息,如下所示。Spring JMS:爲@JmsListener註釋的方法設置ErrorHandler

@JmsListener(destination="exampleQueue") 
public void fetch(@Payload String message){ 
    process(message); 
} 

當一個異常此方法執行結果,我得到了一個警告日誌

Execution of JMS message listener failed, and no ErrorHandler has been set. 

我設置一個ErrorHandler處理的情況怎麼辦。我使用的春天開機1.3.3.RELEASE

+1

在這裏找到答案:HTTP://計算器.com/questions/8922532/jms-message-listener-execution-of-no-errorhandler-has-been-set- – sarahTheButterFly

+0

謝謝@sarahTheButterFly。通過在提供的鏈接中提及Kuchi答案獲得解決方案。我已經調整了一些答案來解決我的問題。我在下面發佈我的答案 – faizi

回答

3

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

0

您可以通過提供自己的CachingConfigurer或更好,但進​​入高級選項從CachingConfigurerSupport延伸,是這樣的:

@Configuration 
@EnableCaching 
public class CachingConfiguration extends CachingConfigurationSupport { 

    @Override 
    public CacheErrorHandler errorHandler() { 
    // return your cache error handler 
    } 

} 

也看到了CacheErrorHandler javadoc

注如果您對缺省值感到滿意(將異常拋回到調用者),則不必指定一個。該錯誤消息通知您使用了默認實現。

相關問題