我使用粉丝输出并在标题中回复地址。棘手的部分是,我想等待所有工人的回复,但我不知道我会收到多少(我不知道发送广播时有多少工人)。
有没有办法知道当前连接了多少工人?
提前致谢!
答案 0 :(得分:4)
简要回答:不,没有。
一般的解决方案是让工人发送正在进行的工作"心跳消息(不是RabbitMQ heartbeats,仅指代代理,我的意思是在应用程序级别)到回复交换。
所以,一旦收到消息并开始工作,你就让工人发出第一次心跳。然后每隔X秒一次,直到他们没有完成任务。
你永远不能保证知道它们有多少。例如,第一条消息可能已到达工作人员,已开始工作但回复无法到达经纪人。或者工作工作者失败并且从不报告结果(但是监控回复的消费者可以知道它的心跳)。
恕我直言,让监控应用程序(您的收集器/减速器任务)了解工作状态是一个很好的做法,特别是当它是一个持久的工作时,而不仅仅是&# 34;等待和希望"。