目前,我们针对大量邮件的发布代码如下所示:
foreach (var message in messages)
{
publisher.Publish(message);
}
是否有能力一次通过频道发送多条消息?
publisher.Publish(messages);
或如果我们分块
var chunks = messages.Chunk(100);
foreach (var chunk in chunks)
{
publisher.Publish(chunk);
}
答案 0 :(得分:2)
对于RabbitMQ,AMQP协议对于生产和消费操作是异步的,因此不清楚如何从开箱即用的批量消费者端点中受益。
如果可以加快操作速度,您可以为分块消息创建端点并在工作流内处理它们。因此,一个解决方案是在发布者类之前包含批处理组件并发送自定义消息。
答案 1 :(得分:0)
在当前版本的RabbitMq(3.8.2)中,您可以按以下方式为c#客户端sdk发送批处理消息:
basicPublishBatch = channel.CreateBasicPublishBatch();
basicPublishBatch.Add("exchange", "routeKey", false, null, new byte[]{1});
basicPublishBatch.Add("exchange", "routeKey", false, null, new byte[]{1});
basicPublishBatch.Publish();
检查此PR:
https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/368