批量发送

更新时间:
复制为 MD 格式

使用限制

  1. 只支持 Remoting SDK。更多说明查看SDK参考概述

  2. 仅支持普通消息和顺序消息,不支持定时消息和事务消息。

  3. 顺序消息要求一批中所有消息具有相同的 Shardingkey 属性。

  4. 一批消息的全部消息大小(包含属性)总和不大于4M,一批的消息数量不大于 4096 条。

  5. 批量发送不支持客户端消息压缩。

  6. 批量发送的每一条消息都需要body大于0(同单条消息)。

  7. 批量发送的每一条消息都会经过属性校验,不得有非法字符(同单条消息)。

  8. 不支持批量的消费。

使用方式

String topic = "BatchTest";
List<Message> messages = new ArrayList<>();
messages.add(new Message(topic, "Tag", "OrderID001", "Hello world 0".getBytes()));
messages.add(new Message(topic, "Tag", "OrderID002", "Hello world 1".getBytes()));
messages.add(new Message(topic, "Tag", "OrderID003", "Hello world 2".getBytes()));

producer.send(messages);  

Canal 适配

# 支持 Batch Send 的实例将可以将flatMessage属性设置为 true
canal.mq.flatMessage = true

消息发送次数计算规则

  • 消息收发次数 = Max{ ⌈消息大小/ 4KB⌉, 实际消息条数} 。例如,一次发送了10条消息,总消息大小为 50 KB,发送次数按照⌈50KB / 4KB⌉= 13计算。

  • 该次数计算规则用于计费计量和限流TPS统计。