gpt4 book ai didi

java - 如何使用 @JmsListener 暂停和开始消费消息

转载 作者:行者123 更新时间:2023-12-01 21:45:26 25 4
gpt4 key购买 nike

我使用的是 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),然后停止/启动容器本身.

关于java - 如何使用 @JmsListener 暂停和开始消费消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com