如果我将消息发送到服务内部的任务并从RabbitMQ“已接收”回调返回,我将立即获得一个新的回调。这不是故意的,因为这样我的服务将作为新队列工作,并且由于第一个服务已使所有消息出队,因此使新工作线程的产生变得更加无用。
我在python示例中看到,回调在完成后会确认消息,但C#不会。可以使用此ack来阻止新消息,直到处理完当前消息为止。
还发现使用信号量阻止“ Received”事件功能,直到处理非常棘手为止。
答案 0 :(得分:0)
您需要将使用者预取设置为1:https://www.rabbitmq.com/consumer-prefetch.html
完成后确认该消息,您将获得下一条消息。
注意: RabbitMQ团队监视rabbitmq-users
mailing list,并且有时仅在StackOverflow上回答问题。