2015-10-20 64 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,現在你必須找出消息設置一個邏輯,如果指定的唯一標頭值已經傳送了一定的時間,則丟棄該消息或將其記錄在某處供參考。