关于RabbitMQ批量发布和排序消息的问题

问题描述 投票:0回答:1

我有一个需要发送到rabbitMq的消息列表。我正在使用公共交通,我会像这样一一发布消息;

foreach (var @event in events)
{
   await _bus.Publish(@event, ....); 
}

但是这种方法的吞吐量非常低,所以我想尝试批量发布这样的东西;

 var tasks = new List<Task>();
foreach (var @event in events)
{
   var  t = _bus.Publish(@event, ....); 
   tasks.Add(t);
}
await Task.WnenAll(tasks);

//and with this configuration;
hostConfigurator.ConfigureBatchPublish(x =>
  {
   x.SizeLimit = 256 * 1024;
   x.Enabled = true;
   x.Timeout = TimeSpan.FromMilliseconds(4);
   x.MessageLimit = 100;
  });

我的问题是:采用这种批量发布方法,消息发送到RabbitMQ的顺序是否仍会保持与第一种方法一样?

我尝试一条一条地发布消息,但吞吐量很低。

rabbitmq masstransit
1个回答
1
投票

它们应该按顺序交付给经纪人,是的。您还可以使用

PublishBatch
扩展方法而不是自己循环。

© www.soinside.com 2019 - 2024. All rights reserved.