【问题标题】:Count of consumers in RabbitMQ (with exchange)RabbitMQ 中的消费者数量(有交换)
【发布时间】:2017-05-13 12:25:36
【问题描述】:

如果我不在 RabbitMQ 中使用交换,我可以获得消费者数量:

channel.QueueDeclare(queue: "Sellers",
                     durable: false,
                     exclusive: false,
                     autoDelete: false,
                     arguments: null);

int sellersCount = channel.ConsumerCount("Sellers");

如何检测交换的消费者数量:

channel.ExchangeDeclare(exchange: "Shop",
                        type: "direct");

channel.BasicPublish(exchange: "Shop",
                     routingKey: "Sellers",
                     basicProperties: null,
                     body: body1);

channel.BasicPublish(exchange: "Shop",
                     routingKey: "Clients",
                     basicProperties: null,
                     body: body2);

int sellersCount = ???
int clientsCount = ???

【问题讨论】:

  • 不存在交换消费者的数量。 Exchange 将消息路由到一个或多个队列。
  • 我可以从交换中获取队列对象吗?我可以通过队列名称获取消费者数量。但我不知道如何从交换中获取队列名称
  • 我认为没有办法通过 amqp 协议本身来做到这一点。但是,rabbitmq 有一个管理插件,并且该插件具有 http api。使用该 api,您可能能够在当前时刻将队列绑定到某个交换。虽然我必须承认你需要这样做的事实可能表明你的设计存在一些缺陷,因为你永远不需要这样做。你能澄清你试图解决的实际问题吗?
  • 我需要知道卖家的数量。如果卖家数量等于 0,我会为客户显示:“没有卖家在线”。

标签: c# .net rabbitmq amqp


【解决方案1】:

要详细说明Evkcomment,这里是RabbitMQ Management HTTP API documentation。试试GET /api/exchanges/vhost/name/bindings/source

以给定交换为源的所有绑定的列表。

请注意,还有一个couple previous 答案也可以解决此问题。

【讨论】:

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