我可以使用RabbitMQ .NET Client遍历队列吗?

Bob*_*byA 5 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>");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使用RabbitMQ .NET Client获得给定虚拟主机上的队列/队列名称的集合?

相关:是否可以使用RabbitMQ .NET Client在服务器上获取虚拟主机/虚拟主机名的集合?

ist*_*iuk 1

不,不是真的。至少对于 AMQP 客户端来说不是这样,因为该协议没有提供获取此类列表的方法。

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