[英]Fetch consumer count from RabbitMQ
我正在尝试获取 RabbitMQ 中特定队列的消费者总数。 我使用 .Net 的 RabbitMQ 客户端在 C# 中编写了我的代码。
string user = ConfigurationManager.AppSettings["rmq_user"];
string pword = ConfigurationManager.AppSettings["rmq_pass"];
string port = ConfigurationManager.AppSettings["rmq_port"];
string host = new Uri(ConfigurationManager.AppSettings["rest_api_url"]).Host;
var factory = new ConnectionFactory();
factory.Uri = "amqp://" + user + ":" + pword + "@" + host + ":" + port;
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
var consumerCount = ((RabbitMQ.Client.Impl.ModelBase)(channel)).m_consumers;
}
}
我得到var consumerCount = ((RabbitMQ.Client.Impl.ModelBase)(channel)).m_consumers;
为 0。但是我可以在 RabbitMQ 网络中看到消费者,并且我已经确保消费者确实存在于该队列中。 这是获取消费者数量的正确方法还是我做错了什么? 我知道这可以使用 RabbitMQ admin 来完成,但我需要用 C# 来完成。 如果我能提供更多细节,请告诉我。
它不起作用,因为您没有指定您想要消费者的队列。
你可以这样做:
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
var queueDeclareOK = channel.QueueDeclarePassive(QueueName);
var consumerCount = queueDeclareOK.ConsumerCount;
}
}
请参阅文档上的IModal.ConsumerCount()
在 golang 中,有一个方法叫做QueueInspect ,它会返回消费者计数:
queue, err := channel.QueueInspect(queueName)
if err != nil {
return errors.New("fail to inspect queue " + queueName + "err: " + err.Error())
}
fmt.Println("consumer count is ", queue.Consumers)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.