我希望能够在Rabbit服务器的虚拟主机上迭代现有队列,并输出队列中的消息数,而无需将队列名称硬编码到我的C#代码中。
以下是使用RabbitMQ .NET客户端通过硬编码队列值来获取队列中的消息数的示例:
using System;
using RabbitMQ.Client;
namespace RabbitMonitor
{
class Program
{
static void Main(string[] args)
{
var factory = new ConnectionFactory()
{
HostName = "<HostName>",
UserName = "<UserName>",
Password = "<Password>",
VirtualHost = "<VirtualHost>",
Port = 5672
};
var queueNameMessageCount = 0;
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
queueNameMessageCount = channel.MessageCount("<QueueName>");
}
}
}
}
有没有办法可以使用RabbitMQ .NET客户端获取给定虚拟主机上的队列/队列名称集合?
相关:有没有办法在服务器上使用RabbitMQ .NET客户端获取虚拟主机/虚拟主机名?
答案 0 :(得分:0)
不,不是。至少不与AMQP客户端一起使用,因为该协议没有提供获取此类列表的方法。
但是,您可以使用RabbitMQ management plugin。它提供了一个REST API,您可以在其中收集此信息。