rocketmq的一条消息是由几部分组成的,比如消息+消息的properties+系统属性(服务端timestamp等等),我的意思是现在代码里面的CRC只对消息本身做了CRC校验,并没有对消息的properties以及系统属性做CRC;而相对应的,kakfa的CRC则是对整个落盘数据做了CRC校验的,所以我才会问下,是我代码没有看全还是确实是这样的呢?
老胡 <[email protected]> 于2018年5月29日周二 下午6:07写道: > crc是数据校验,所有的数据都crc都对了,整个就对了。 对当前mappedfile实时crc,是不现实的操作。 如何可能crc的功能是关闭的 > ------------------ 原始邮件 ------------------ > *发件人:* "yuzhou li"<[email protected]> > *发送时间:* 2018年5月29日(星期二) 下午5:56 > *收件人:* "users"<[email protected]>; > *主题:* rocketmq落盘消息协议CRC的疑问 > > this.resetByteBuffer(msgStoreItemMemory, msgLen); > // 1 TOTALSIZE > this.msgStoreItemMemory.putInt(msgLen); > // 2 MAGICCODE > this.msgStoreItemMemory.putInt(CommitLog.MESSAGE_MAGIC_CODE); > // 3 BODYCRC > this.msgStoreItemMemory.putInt(msgInner.getBodyCRC()); > // 4 QUEUEID > this.msgStoreItemMemory.putInt(msgInner.getQueueId()); > // 5 FLAG > this.msgStoreItemMemory.putInt(msgInner.getFlag()); > > > 落盘的消息只存放了消息内容的CRC校验值,似乎没有对整个落盘数据做CRC校验,这块是有其他地方做了整体的CRC验证吗?还是我理解错了呢? >
