Windows 上的 RabbitMQ 似乎限制了每个进程的连接创建

RabbitMQ on Windows seems to limit connection creation per process

我想了解我在使用以下代码时看到的行为。使用 RabbitMQ.Client 库版本 6.2.2.

预期行为:连接创建速度很快,进程不会减慢。

实际行为:前 6 个连接创建速度很快,之后速度明显变慢,连接一个接一个地创建(相隔 1 秒)。

注意;多次启动程序会显示类似的行为。这让我相信瓶颈是每个进程而不是 RabbitMQ 或系统资源。

注2;系统资源不是瓶颈(AFAIK)。

有人知道是什么导致了观察到的行为吗? RabbitMQ 安装在 Windows 10 上,默认设置。

using RabbitMQ.Client;
using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 50; i++)
            {
                var factory = new ConnectionFactory() { HostName = "localhost" };
                var connection = factory.CreateConnection();

                var channel1 = connection.CreateModel();
                var channel2 = connection.CreateModel();

                Console.WriteLine(i);
            }
            Console.ReadLine();
        }
    }
}

编辑:我知道这违反了关于“每个进程单个连接”的所有最佳实践。我只是好奇是什么限制了连接的创建,是否有任何设置可以控制这种行为。

.NET 客户端使用的 ThreadPool 可能没有足够的开箱即用线程。您需要增加可用数量:

https://github.com/rabbitmq/rabbitmq-dotnet-client/blob/main/projects/TestApplications/MassPublish/Program.cs#L21

在此处查看问题和讨论:

https://github.com/rabbitmq/rabbitmq-dotnet-client/search?q=threadpool


注意: RabbitMQ 团队监控 rabbitmq-users mailing list 并且有时只在 Whosebug 上回答问题。