2015-10-20 63 views
0

我使用spring DefaultJmsListenerContainerFactory和annotation @JmsListener(destination =“test.dev.1”)在队列上监听消息。我已将应答模式设置为Session.CLIENT_ACKNOWLEDGE,因此如果在消息处理过程中发生任何异常,则会重新发送消息。但是,我想限制消息被重新发送的次数(重试)?我怎样才能做到这一点?春天如何限制在消息监听器中的重试次数

这里是我的DefaultJmsListenerContainerFactory代码:

@Bean 
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() { 
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); 
    factory.setConnectionFactory(jmsConnectionFactory()); 
    factory.setConcurrency("1"); 
    factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE); 

    return factory; 
} 

回答

1

这不是JMS规范的一部分;它有时可以配置为经纪人的策略。

+0

thx @Gary Russell –

0

有点那里的解决方案只适用当你对代理端没有控制权,你仍然想在你的监听程序来处理这一点 - 你可以通过在头I,E的correlationID或jmsID,现在你必须找出消息设置一个逻辑,如果指定的唯一标头值已经传送了一定的时间,则丢弃该消息或将其记录在某处供参考。