0
我對AMQ相當陌生,但我理解制作消息,將其發送到隊列以及異步使用它的概念。停止對異常的AMQ MessageListenerAdapter
我的主要Spring的配置文件有以下幾種
@Bean
public DefaultMessageListenerContainer listenerContainer(
MessageListenerAdapter adapter) {
DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer();
dmlc.setConnectionFactory(connectionFactory());
dmlc.setMessageListener(adapter);
dmlc.setDestinationName("myQueue");
dmlc.setConcurrentConsumers(5);
return dmlc;
}
@Bean
MessageListenerAdapter adapter(MyClass myClass) {
MessageListenerAdapter messageListener = new MessageListenerAdapter(
myClass);
messageListener.setDefaultListenerMethod("myMethod");
return messageListener;
}
@Bean
public JmsTemplate jmsTemplate() {
JmsTemplate jt = new JmsTemplate(connectionFactory());
return jt;
}
我有麻煩的事情發送到隊列jmsTemplate.convertAndSend(),然後用myClass的#myMethod的
我的問題 recieving他們:如果發生異常,我需要偵聽器停止使用消息。通常情況下,例外會告訴我遠程站點處於脫機狀態,稍後再嘗試。如果我不阻止它,那麼所有這些信息都會丟失。想保持隊列滿,直到我能夠再次發送。
可能嗎?
我剛剛發現我以前在auto-ack。試過Session.CLIENT_ACKNOWLEDGE,它表示會將失敗的消息保存在隊列中,但它會一直停留在相同的消息上,直到被傳遞,而不是任何想法? – javaNoober 2014-10-31 19:37:02
您需要設置重送策略。 http://activemq.apache.org/redelivery-policy.html CLIENT_ACKs不適用於所有情況,但有其他例外,它不會被處理。本文檔對每種模式默認提供的內容都有很好的解釋http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/listener/AbstractMessageListenerContainer.html – 2014-10-31 19:51:31