RabbitMQ 在接收新消息之前使用一条消息

RabbitMQ consuming one message before receiving a new

如果我将消息发送到我的服务中的任务,并且 returns 来自 RabbitMQ“已接收”回调,我会立即收到一个新的回调。这不是故意的,因为我的服务然后将作为一个新队列工作,并且由于第一个服务已经使所有消息出队,所以新工作人员的产生变得更加无用。

我可以在 python 示例中看到,回调会在完成时确认消息,但 C# 不会。在处理当前消息之前,是否可以使用此 ack 床来阻止新消息。

还发现使用信号量阻止“已接收”事件函数,直到处理完成非常非常 hacky。

您需要将消费者预取设置为 1:https://www.rabbitmq.com/consumer-prefetch.html

完成后确认消息,您将收到下一条消息。


注意: RabbitMQ 团队监控 rabbitmq-users mailing list 并且有时只在 Whosebug 上回答问题。