【问题标题】:Waiting for feedback from every consumer with RabbitMQ on a topic exchange在主题交换中使用 RabbitMQ 等待每个消费者的反馈
【发布时间】:2013-09-24 03:43:33
【问题描述】:

我有一个发布者(使用 RabbitMQ .NET 客户端)和多个消费者(使用 Pika Python 模块)。他们使用单个主题交换,消费者有单独的队列。我想实现分布式 RPC 风格的调用,这需要我在继续或超时之前等待回复 (JSON)。

当我发布消息时,我需要等待并从收到我消息的“所有”客户那里得到回复。 (可能针对发布者端的单个消费者。)我使用路由键发布消息,因此在发布之前我不知道有多少消费者在收听,但我仍然需要等待任意数量的客户端。

这是为了通知用户我们正在处理他们的请求,并就他们的请求是否已完全满足提供反馈。

有没有办法通过 RabbitMQ 实现这一点?我不想使用 Broker 特定的 RESTful API 来获取消费者名称/消费者数量并循环等待。

【问题讨论】:

    标签: python .net rabbitmq rpc amqp


    【解决方案1】:

    显然,仅使用 AMQP 无法完成此任务。我不得不使用 RabbitMQ 的 API。

    向以下地址发出 GET 请求:http://rabbitmq_hostname:15672/api/exchanges/%2F/worker/bindings/source 返回虚拟主机 / 中交换“工人”的每个消费者。 (编码为 %2F)

    使用单独的队列获取消费者的数量很简单:

    jsonResponse.Where(o => o["destination_type"] == "queue").Count();
    

    如果我向主题交换发送消息,我会知道我应该期待多少响应。

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多