我想了解我在以下代码中看到的行为。使用 RabbitMQ.Client 库版本 6.2.2。
预期行为: 连接快速创建,并且过程不会减慢。
实际行为: 前 6 个连接快速创建,之后速度显着下降,连接创建完成(间隔 1 秒)。
注意;多次启动程序会显示类似的行为。这让我相信瓶颈在于每个进程,而不是 RabbitMQ 或系统资源。
注2;系统资源不是瓶颈(据我所知)。
有人知道是什么导致了观察到的行为吗? 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/search?q=threadpool