我使用的是spring boot 1.3.2版。我正在使用@JmsListener来使用来自activemq的消息来获取我使用JmsTemplate创建/生成的消息。这是代码:
@JmsListener(destination = "myqueue")
public void consumeMsg(Object requestBody)
try {
javaMailSender.send(requestBody);
} catch (MailException ex) {
LOG.error(ex.getLocalizedMessage(), ex);
if(ex.getMessage().contains(SMTP_CONNECTION_FAILURE) && activeMqMsg.getIntProperty("RETRYCOUNT") == 1) {
producer.send("myqueue",requestBody)
}
else {
producer.send("manualqueue",requestBody)
}
}
}
现在当smtp出现连接失败错误时,我想暂停@JmsListener一段时间并重新开始使用该消息。我没有看到使用@JmsListener的这个用例的更好的例子。由于我使用的是spring boot,我在应用程序属性中添加了activemq连接参数,我不需要编写任何代码来创建连接工厂,设置队列......等等,你能帮忙解决一下这个问题吗?
答案 0 :(得分:1)
获取JmsListenerEndpointRegistry
bean的引用(例如@Autowire
)并调用stop()
- 它将停止所有侦听器。 start()
将启动所有听众。
如果您有多个侦听器并且只想停止1,请为其指定id
属性并使用registry.getListenerContainer(id)
,然后停止/启动容器本身。