我可以使用RabbitMQ .NET客户端迭代队列吗?

时间:2017-04-10 21:07:13

标签: c# rabbitmq

我希望能够在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客户端获取虚拟主机/虚拟主机名?

1 个答案:

答案 0 :(得分:0)

不,不是。至少不与AMQP客户端一起使用,因为该协议没有提供获取此类列表的方法。

但是,您可以使用RabbitMQ management plugin。它提供了一个REST API,您可以在其中收集此信息。