【发布时间】:2014-12-27 05:38:38
【问题描述】:
我对 AMQ 还很陌生,我确实了解创建消息、将其发送到队列并异步使用它的概念。
我的主要 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 接收它们
我的问题:如果抛出异常,我需要侦听器停止消费消息。通常异常会告诉我远程站点离线并稍后再试。如果我不停止它,所有这些消息大部分都会丢失。想保持队列满,直到我能够再次发送。
有可能吗?
【问题讨论】: