如何使用@JmsListener暂停和开始使用消息
我正在使用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连接参数,不需要编写任何代码来创建连接工厂,设置队列…等等,您能帮忙吗?
回答:
获取对该JmsListenerEndpointRegistry
bean
的引用(例如@Autowire
)并调用stop()
-它会停止所有侦听器。start()
将启动所有侦听器。
如果您有多个侦听器,并且只想停止1,请为其提供一个id
属性并使用registry.getListenerContainer(id)
,然后停止/启动容器本身。
以上是 如何使用@JmsListener暂停和开始使用消息 的全部内容, 来源链接: utcz.com/qa/435912.html