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

wlsrxk51  于 8个月前  发布在  RabbitMQ
关注(0)|答案(1)|浏览(77)

我想理解我在下面的代码中看到的行为。使用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();
        }
    }
}

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

rjee0c15

rjee0c151#

.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

相关问题