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

暂时停止使用RabbitMQ消息,稍后再继续

柳飞飙
2023-03-14

我使用Java的rabbitmq-client(https://mvnrepository.com/artifact/com.rabbitmq/amqp-client),我需要实现以下场景:

  • 在接收Rabbit消息时,如果怀疑内存中不适合所有等待的数据,则可能需要暂停特定队列的Rabbitmq消耗。
  • 处理完一些消息后,需要再次打开以下一组消息的消耗。
  • 根据需要重复。

使用amqp-client Java库实现RabbitMQ队列监听的暂停/恢复的最佳方法是什么?

共有1个答案

商璞
2023-03-14

您没有提到使用哪种方法来使用消息,所以我假设您正在使用basicconsumer订阅队列中的消息。

正如该文档所提到的,您可以使用basiccancel停止从队列消费。然后,当您希望重新启动时,可以使用basicconsument

请确保使用basicqos设置合理的预取计数。

 类似资料:
  • 我的应用程序使用来自RabbitMQ的一些消息并对其进行处理。我有大约10个队列,每个队列最多有10个消费者(线程)。我有5次预回迁。我正在Heroku中使用CloudAMQP插件(RabbitMQ作为服务)运行安装程序。 我使用默认心跳和连接超时设置(60秒)运行。 我的java应用程序是一个使用sping-Rabbit库的Spring Boot应用程序。 版本: 问题是对于一个特定队列的消费者

  • 我有一只兔子。OpenShift上的6.10实例在启用MQTT插件的情况下运行。我有多个Spring Boot应用程序,使用EclipsePAHOMQTT实现,使用RabbitMQ队列中的消息。所有使用者都使用。持久性数据被写入具有100M配额的持久性卷上的目录。这是我为连接RabbitMQ队列而编写的代码: 现在我意识到,由于某些原因,如果重新启动消费应用程序,它将不再使用任何消息。正如我在Ra

  • 我正在使用NSeriveBus构建一个系统,它应该只在特定的时间段将消息发送给远程处理程序。到目前为止,我设法将所有消息放在一个处理队列上,并从那里检查远程处理程序的可用性,如果处理程序不可用,我就不会通过边界发送消息。要做到这一点,我正在使用 但国家安全局会继续努力。这不像其他侦听器将在几分钟内启动并运行,但它可能有几个小时的停机窗口,因此这并不完全有效。 想知道是否有办法让总线稍后重试消息,或

  • 我正在使用这个库来实现节点kafka与消费者暂停和恢复方法来处理背压。我已经创建了一个小演示,我可以在其中和,但问题是在后它停止了消费消息。 这是我的代码。 任何人都可以帮助我,我在恢复消费者时做错了什么?当我启动使用者时,它只接收一条消息,并且在恢复后仍然不消耗任何其他消息。

  • 我使用的是spring引导版本1.3.2。我正在使用@JMSListener从activemq获取我使用JMSTemplate创建/生成的消息。代码如下: 现在当从smtp出现连接失败错误时,我想暂停@JMSListener一段时间,然后重新开始使用消息。对于这个用例,我还没有看到使用@JMSListener的更好的例子。由于我使用的是spring boot,我在应用程序属性中添加了activem

  • 更新06/04这里是消费者出厂设置。它是Spring-Kafka-1.3.1。Kafka经纪人合流版 注意:容器工厂已将自动启动设置为false。这是在加载大文件时手动启动/停止使用者。 运行大约1小时后(时间不同),使用者停止使用来自其主题的消息,即使该主题有许多可用消息。Consumer方法中有一个log语句,用于停止在日志中打印。 我们如何设计Spring-Kafka消费者,使其在停止消费的