从react \ stomp只消耗RabbitMQ发出的N封邮件,单独确认,然后退出

问题描述:

我正在使用RabbitMQ和PHP react \ stomp。我有两个队列 - 一个是“todo”,另一个是“完成”。消费者从“待办事项”中读取,完成其工作,确认消息,然后将其发布到“完成”队列。从react stomp只消耗RabbitMQ发出的N封邮件,单独确认,然后退出

有没有什么方法可以确保我只消耗“todo”中的N条消息(并单独对其进行确认),然后退出?主要原因是我们不想长时间运行消费者,我们希望在N条消息后重新启动它们。

你可以设置一个预取计数目标:

预取计数的所有预订被 默认设置为无限制。这可以通过将SUBSCRIBE帧上的预取计数标题 设置为所需的整数计数来控制。

https://www.rabbitmq.com/stomp.html

所以消耗只有十消息,报头

prefetch-count:10 

添加到SUBSCRIBE帧。

对于逐条消息手动确认,您可以将确认模式设置为client-individual

+0

这是真的,但是我发现预取消息窗口重叠。通过消费者处理第10条消息的时间,已经有10个消息加载的另一个窗口。一种解决方案是设置prefetch-count:1,这就意味着我们可以根据每条消息控制消费者,并在10条消息完全消失后停止。 – Langosh 2015-03-18 01:02:47