是否可以使用RabbitMQ客户端为C#一次发布多条消息?

时间:2015-02-11 09:57:17

标签: c# rabbitmq

目前,我们针对大量邮件的发布代码如下所示:

foreach (var message in messages)
{
    publisher.Publish(message);
}

是否有能力一次通过频道发送多条消息?

publisher.Publish(messages);

或如果我们分块

var chunks = messages.Chunk(100);
foreach (var chunk in chunks)
{
    publisher.Publish(chunk);
}

2 个答案:

答案 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