RabbitMQ在接收新消息之前先消耗一条消息

时间:2019-10-22 07:01:35

标签: c# rabbitmq consuming

如果我将消息发送到服务内部的任务并从RabbitMQ“已接收”回调返回,我将立即获得一个新的回调。这不是故意的,因为这样我的服务将作为新队列工作,并且由于第一个服务已使所有消息出队,因此使新工作线程的产生变得更加无用。

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

还发现使用信号量阻止“ Received”事件功能,直到处理非常棘手为止。

1 个答案:

答案 0 :(得分:0)

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

完成后确认该消息,您将获得下一条消息。


注意: RabbitMQ团队监视rabbitmq-users mailing list,并且有时仅在StackOverflow上回答问题。