正在扇出交换上等待所有rabbitmq响应?

正在扇出交换上等待所有rabbitmq响应?,rabbitmq,amqp,Rabbitmq,Amqp,我已经为RPC工作负载配置了一个名为“ex\u foo”的rabbitmq扇出交换。当客户端连接到服务器时,它们会创建自己的非持久RPC接收队列,并使用BasicConsumer连接到该队列。这些应用程序侦听消息/命令,并响应请求的reply\u to部分中定义的队列 我向扇出交换发送的一条简单消息/命令(因此,连接到扇出交换的每个应用程序/客户端)是一种类型的ping请求消息,我的问题是我不知道我将得到多少ping响应(或应该得到的),因为我不知道一次有多少客户端连接到扇出交换。所有连接到扇出

我已经为RPC工作负载配置了一个名为“
ex\u foo
”的rabbitmq扇出交换。当客户端连接到服务器时,它们会创建自己的非持久RPC接收队列,并使用BasicConsumer连接到该队列。这些应用程序侦听消息/命令,并响应请求的
reply\u to
部分中定义的队列

我向扇出交换发送的一条简单消息/命令(因此,连接到扇出交换的每个应用程序/客户端)是一种类型的ping请求消息,我的问题是我不知道我将得到多少ping响应(或应该得到的),因为我不知道一次有多少客户端连接到扇出交换。所有连接到扇出交换的客户端都应回复


如果发送到fanout exchange上的10个队列(即:连接了10个客户端),我如何知道预期的响应数量?为了知道这一点,我需要知道它被交付了多少次吗?有没有更先进的睡眠计时器?简单地说,我的管理工具不能无限期地等待,需要在接收到所有ping后退出。(或超时时间已过)。

您要寻找的是类似于散点-聚集()模式的东西,不是吗

您不知道绑定到扇出的消费者,因此您可以:

  • 例如,使用绑定生产者的队列从消费者实现保持活动。 每秒钟,每个消费者都会发送一条keep alive消息,如果您没有收到消息,您可以离线考虑消费者
  • 使用注册使用者的内存中数据库(始终使用keep alive)
  • 使用了解绑定到扇出的使用者列表,方法如下:
  • 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":"~"}]
    
    一旦统计了消费者,你就知道回复的数量了

    在发送请求之前调用API

    注意只有在使用绑定到使用者的临时队列时,最后一个队列才有效

    我发现这个资源可以帮助你()


    我不知道您的最终范围,但使用keep alive,您最多可以等待一秒钟,然后再决定消费者是否还活着

    您要寻找的是类似于散点-聚集()模式的东西,不是吗

    您不知道绑定到扇出的消费者,因此您可以:

  • 例如,使用绑定生产者的队列从消费者实现保持活动。 每秒钟,每个消费者都会发送一条keep alive消息,如果您没有收到消息,您可以离线考虑消费者
  • 使用注册使用者的内存中数据库(始终使用keep alive)
  • 使用了解绑定到扇出的使用者列表,方法如下:
  • 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":"~"}]
    
    一旦统计了消费者,你就知道回复的数量了

    在发送请求之前调用API

    注意只有在使用绑定到使用者的临时队列时,最后一个队列才有效

    我发现这个资源可以帮助你()


    我不知道您的最终范围,但使用keep alive,您最多可以等待一秒钟,然后再决定消费者是否还活着

    你能将那些没有响应的节点视为“关闭”吗?当然,如果节点没有响应,它就关闭了。但是一个ping请求将生成许多ping响应,如果我只需sleep()10秒,看看我得到了多少响应,例如,如果每个节点都在1秒内响应,这似乎很糟糕;你等了一段时间,如果它在这段时间内没有回应,我想我今天也问了同样的问题。(我尽可能地将我的标记为重复):你能将没有响应的节点视为“关闭”吗?当然,如果节点没有响应,它就关闭了。但是一个ping请求将生成许多ping响应,如果我只需sleep()10秒,看看我得到了多少响应,例如,如果每个节点都在1秒内响应,这似乎很糟糕;你等了一段时间,如果它在这段时间内没有回应,我想我今天也问了同样的问题。(我尽可能地将我的答案标记为重复):http api答案是平滑的。http api答案是平滑的。