在rabbitmq中广播消息并等待所有回复

时间:2014-03-24 11:13:02

标签: rabbitmq amqp

我使用粉丝输出并在标题中回复地址。棘手的部分是,我想等待所有工人的回复,但我不知道我会收到多少(我不知道发送广播时有多少工人)。

有没有办法知道当前连接了多少工人?

提前致谢!

1 个答案:

答案 0 :(得分:4)

简要回答:不,没有。

一般的解决方案是让工人发送正在进行的工作"心跳消息(不是RabbitMQ heartbeats,仅指代代理,我的意思是在应用程序级别)到回复交换。

所以,一旦收到消息并开始工作,你就让工人发出第一次心跳。然后每隔X秒一次,直到他们没有完成任务。

你永远不能保证知道它们有多少。例如,第一条消息可能已到达工作人员,已开始工作但回复无法到达经纪人。或者工作工作者失败并且从不报告结果(但是监控回复的消费者可以知道它的心跳)。

恕我直言,让监控应用程序(您的收集器/减速器任务)了解工作状态是一个很好的做法,特别是当它是一个持久的工作时,而不仅仅是&# 34;等待和希望"。