【发布时间】:2018-03-15 00:55:08
【问题描述】:
将 MassTransit 软件包更新到最新版本 (4.1.0.1426-develop) 后,我在注册超过 26 个队列时遇到问题。例如,下面的代码会因错误而崩溃
[20:51:06 ERR] RabbitMQ 连接失败:代理无法访问: 来宾@localhost:5672/test
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true);
var configuration = builder.Build();
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.ReadFrom.Configuration(configuration)
.CreateLogger();
Log.Information("Starting Receiver...");
var services = new ServiceCollection();
services.AddSingleton(context => Bus.Factory.CreateUsingRabbitMq(x =>
{
IRabbitMqHost host = x.Host(new Uri("rabbitmq://guest:guest@localhost:5672/test"), h => { });
for (var i = 0; i < 27; i++)
{
x.ReceiveEndpoint(host, $"receiver_queue{i}", e =>
{
e.Consumer<TestHandler>();
});
}
x.UseSerilog();
}));
var container = services.BuildServiceProvider();
var busControl = container.GetRequiredService<IBusControl>();
busControl.Start();
Log.Information("Receiver started...");
}
所以,它不能注册 27 个队列。但是,如果我将数字减少到 26,它会起作用 :)
如果我将 MT NuGet 包降级到最新的稳定 4.0.1 版本,它可以完美运行,我最多可以注册 50 个队列。
另外,另一个观察结果 - 对于 4.1.0.1426-develop 版本,启动这个非常小的应用程序需要更长的时间。但是,当我使用最新的稳定版 4.0.1 对其进行测试并尝试创建 50 个队列时,它几乎立即启动。
有什么想法来自哪里以及如何避免它?
【问题讨论】:
-
我建议在 Github 上创建一个复制存储库并在 MT 存储库中打开一个问题。
-
是的,这很奇怪。我想知道为什么它会做这样的事情。也许对 Task.WhenAll 的限制?嗯。
-
我按照@Alexey Zimarev 的建议在github.com/MassTransit/MassTransit/issues/1078 打开了问题
标签: rabbitmq masstransit