当前位置: 首页 > 知识库问答 >
问题:

如何使用@JMSListener暂停和开始使用消息

陈浩
2023-03-14

我使用的是spring引导版本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连接参数,我不需要编写任何代码来创建连接工厂,设置队列...等等,你能帮助我们如何做到这一点吗?

共有1个答案

姬乐
2023-03-14

获取对JMSListenerEndpointRegistrybean的引用(例如@autowire)并调用stop()-它将停止所有侦听器。start()将启动所有侦听器。

如果您有多个侦听器,并且只想停止1,则为其赋予id属性并使用Registry.GetListenerContainer(id),然后停止/启动容器本身。

 类似资料:
  • 我正在寻找一个解决方案,以暂停从应用程序本身的kinesis流的消息消费时,下游服务关闭。我正在使用Spring-云-流-绑定器-动力。这样做没有明显的选择。在KCL api上似乎也没有一个选项。在Spring执行器绑定endpoint上有停止/暂停,这似乎对Kinesis不起作用。一种选择是使用AWS SDK api,并执行一个拉机制而不是KCL/Spring cloud的推机制,并停止拉断路器

  • 问题内容: 谁能帮助我如何使用Selenium自动播放/暂停网页上显示的视频。 提前致谢… 问题答案: 这在很大程度上取决于浏览器和处理视频的播放器。您很有可能需要使用JavaScript执行程序。 我昨晚与一位朋友讨论了这个问题,他提出了以下示例,该示例使用了Webdriver的Python变体,用于html5demos.com的演示视频: 您也可以在使用“播放”的地方“暂停”。 这里有一个更大

  • 我正在从数据库中提取数据,以检查我是否有可用的系统资源来处理来自KafkaListener的进一步消息。如果我的条件没有满足,那么我希望@KafkaListener暂停,当条件满足时,我希望@KafkaListener恢复。我如何在SpringKafka实现这一点? 另外,为特定分区暂停消费者有什么缺点吗?

  • 我使用的是spring kafka 2.2。8,并试图了解是否有一个选项可以部署处于暂停模式的Kafka消费者,直到我发出信号开始使用消息。请建议。 我在下面的帖子中看到,我们可以暂停并启动消费者,但我需要消费者在部署时处于暂停模式。如何使用spring kafka暂停并恢复@KafkaListener

  • 问题内容: 我试图谷歌,并从这个论坛上寻找我的问题的解决方案,但到目前为止没有运气。我想通过单击图片来暂停CSS3动画(图像幻灯片放映),并通过单击图片来恢复到相同的动画。 我知道如何暂停幻灯片放映,我也能够将其恢复一次,但是如果尝试暂停并恢复多次以上,它将停止工作。这是我的代码的样子: 我不想使用任何JS库(例如jQuery)或任何其他外部解决方案。 我的猜测是我的函数内部的函数仍在运行,这就是

  • 我有一个简单的计划任务,它是使用@计划注释创建的。类似这样的东西- 我还有一个蓝绿色升级场景,在这个场景中,这个计划任务可能会在蓝色和绿色集群中运行。鉴于这个计划任务修改了数据库,其中一个节点可能会覆盖来自另一个节点的数据——或者最坏情况下的竞争条件。 我想暂停绿色集群上所有计划的任务,直到它准备好接受流量。我已经有了代码来监听应用程序状态的变化。 我探索了几个选择- 只需在任务开始时添加一个布尔