我ex_foo
为RPC工作负载配置了一个名为" " 的rabbitmq扇出交换.当客户端连接到服务器时,它们会创建自己的非持久RPC接收队列,并使用BasicConsumer连接到它.应用程序侦听消息/命令并响应reply_to
请求部分中定义的队列.
我发送扇出交换的简单消息/命令之一(因此,连接到它的每个应用程序/客户端)都是一种ping请求消息,我的问题是我不知道有多少ping响应我会得到(或应该期待),因为我不知道有多少客户端在任何时候连接到扇出交换机.连接到扇出交换的所有客户都应该回复.
如果在扇出交换机上传送到10个队列(即:连接了10个客户端),我怎么知道有多少响应?为了知道这一点,我是否必须知道交付了多少次?有没有更复杂的睡眠计时器?简单地说,我的管理工具不能无限期地等待,并且在收到所有ping(或超时已经过去)之后需要退出.
您正在寻找的是像Scatter-Gather(http://www.eaipatterns.com/BroadcastAggregate.html)模式,不是吗?
你不知道消费者受到扇出的影响,所以你可以:
http://rabbitmqip/vhost/yourfanout/bindings/source
结果是这样的:
[{"source":"yourfanout","vhost":"/","destination":"amq.gen-xOpYc8m10Qy1s4KCNFCgFw","destination_type":"queue","routing_key":"","arguments":{},"properties_key":"~"},{"source":" yourfanout","vhost":"/","destination":"myqueue","destination_type":"queue","routing_key":"","arguments":{},"properties_key":"~"}]
Run Code Online (Sandbox Code Playgroud)
一旦计算了消费者,就会知道回复的数量.
在发送请求之前调用API.
注意只有在使用绑定到使用者的临时队列时,最后一个才能工作.
我发现这个资源可以帮到你(http://geekswithblogs.net/michaelstephenson/archive/2012/08/06/150373.aspx)
我不确切地知道你的最终范围,但是在保持活着的情况下,你可以等待最多一秒钟,然后再决定消费者是否还活着.
归档时间: |
|
查看次数: |
1413 次 |
最近记录: |