现在,我们的大量消息发布代码如下所示:
foreach (var message in messages)
{
publisher.Publish(message);
}
Run Code Online (Sandbox Code Playgroud)
是否有能力一次通过频道发送多条消息?
publisher.Publish(messages);
Run Code Online (Sandbox Code Playgroud)
或者如果我们大块的话
var chunks = messages.Chunk(100);
foreach (var chunk in chunks)
{
publisher.Publish(chunk);
}
Run Code Online (Sandbox Code Playgroud)
使用当前版本的 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();
检查这个公关:https :
//github.com/rabbitmq/rabbitmq-dotnet-client/pull/368
对于 RabbitMQ,AMQP 协议对于生产和消费操作是异步的,因此尚不清楚如何从开箱即用的批量消费者端点中受益。
您可以做的是为分块消息创建端点,并在工作流程中处理它们(如果可以加快操作速度)。因此,一种解决方案是在发布者类之前包含批处理组件并发送自定义消息。