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