Spring-Boot/AMQP - 处理的消息数量限制

Spring-Boot/AMQP - Limit number of messages processed

我有一个使用 spring-boot AMQP 库的 spring-boot 应用程序。

pom.xml :

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

如何让它处理并确认 一条 消息然后优雅地退出?

可以让它在不确认的情况下退出,但似乎无法弄清楚如何确认消息然后退出!

您可以简单地使用 RabbitTemplate.receive()(或 receiveAndConvert())方法之一,而不是使用侦听器容器。

您可以按照以下步骤操作:

  • 使用 Spring 的 RabbitListener 作为侦听器(完整示例请参阅 this SO answer
  • 在您的侦听器中声明一个 AtomicInteger 作为计数器 class
  • 在您收听消息后增加计数器(即 listen 方法执行时没有任何异常)。 Spring只有方法执行成功才会发送ack
  • 如果计数器的值大于0(或大于配置的阈值),通过调用stop()方法停止监听
  • 使用@Value配置阈值并使用incrementAndget()方法自动递增计数器