Spring-Boot / AMQP - 限制处理的邮件数量

时间:2017-11-08 16:48:17

标签: java spring-boot rabbitmq spring-amqp

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

pom.xml

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

如何让它处理并确认单个消息然后正常退出?

可以让它在没有确认的情况下退出,但似乎无法确定如何确认消息然后退出!

2 个答案:

答案 0 :(得分:1)

您只需使用RabbitTemplate.receive()(或receiveAndConvert())方法之一,而不是使用侦听器容器。

答案 1 :(得分:1)

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

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