虽然 RocketMQ 没有 kafka 的批量发送的功能。但在发送消息的时候,如果消息大小超过了 128k ,这条消息是不允许发送的。但如果消息 大小超过了 4k,那么,这条消息将会被压缩。
校验工作的方法:
Validators.checkMessage(msg, this.defaultMQProducer);
如果消息大小 大于 4k,那么,这条消息将会被压缩。
// 尝试着去压缩消息。原生消息 >4k ,将压缩消息
if (this.tryToCompressMessage(msg)) {
sysFlag |= MessageSysFlag.CompressedFlag;
}
这样,最终 broker 保存了是 经过压缩后的消息的。但在哪里解压呢?其实,压缩后的消息是在 消费端进行解的。
Rocketmq 的解压消息的工具类及方法:
解压工具:UtilAll.uncoress
客户端在拉取消息后,会进行消息的处理的,如果这条消息是曾经压缩过的,那么,将会被解压的。否则,按照正常逻。
。走。