我正在使用带有 PHP react\stomp 的 RabbitMQ。我有两个队列 - 一个是“待办事项”,另一个是“完成”。消费者从“待办事项”中读取,完成其工作,确认消息,然后将其发布到“完成”队列。
有什么方法可以确保我只使用来自“todo”的 N 条消息(并单独确认它们)然后退出?主要原因是我们不希望有长时间运行的消费者,我们希望在 N 条消息后重新启动它们。
您可以为目的地设置预取计数:
默认情况下,所有订阅的预取计数设置为无限制。这可以通过将 SUBSCRIBE 帧上的预取计数标头设置为所需的整数计数来控制。
https://www.rabbitmq.com/stomp.html
所以要只消费十条消息,添加标题
prefetch-count:10
到SUBSCRIBE
框架。
您可以将 ack 模式设置client-individual
为逐个消息手动确认。