RocketMq(rockmq-all 4.4.1-SNAPSHOT): 默认压缩大于4K的消息(可配置),压缩算法是zip,默认级别5(可配置),同样也是客户端做解压缩工作,服务端只存储;对于批量消息的压缩,目前并不支持。
摘取DefaultMQProducerImpl.java 部分源码:
private boolean tryToCompressMessage(final Message msg) {
if (msg instanceof MessageBatch) {
//batch dose not support compressing right now
return false;
}
byte[] body = msg.getBody();
if (body != null) {
if (body.length >= this.defaultMQProducer.getCompressMsgBodyOverHowmuch()) {
try {
byte[] data = UtilAll.compress(body, zipCompressLevel);
if (data != null) {
msg.setBody(data);
return true;
}
} catch (IOException e) {
log.error("tryToCompressMessage exception", e);
log.warn(msg.toString());
}
}
}
return false;
}
展开