码迷,mamicode.com
首页 > 其他好文 > 详细

rocketMQ 删除过期文件

时间:2020-03-03 20:51:15      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:删除文件   img   image   inner   cal   ons   buffer   时间   fse   

commitLog 删除文件的策略
指定时间到了,磁盘不足,人工删除,满足任一条件,判断文件是否过期或者磁盘不足,是则删除,一批次最多删除 10 个文件。

commitLog,consumeQueue,indexFile 的删除策略如下图:

技术图片

 

 

commitLog 尾部是有空洞的,当一个消息在当前文件放不下时,rocketmq 认为下一个文件一定能放下该消息,消息不会分隔保存。

commitLog 文件尾部存在至少 8 字节的空洞。

一般情况的尾部组成:maxBlank,BLANK_MAGIC_CODE,随机的内容

// org.apache.rocketmq.store.CommitLog.DefaultAppendMessageCallback#doAppend
if ((msgLen + END_FILE_MIN_BLANK_LENGTH) > maxBlank) {
    this.resetByteBuffer(this.msgStoreItemMemory, maxBlank);
    // 1 TOTALSIZE
    this.msgStoreItemMemory.putInt(maxBlank);
    // 2 MAGICCODE
    this.msgStoreItemMemory.putInt(CommitLog.BLANK_MAGIC_CODE);
    // 3 The remaining space may be any value
    // Here the length of the specially set maxBlank
    final long beginTimeMills = CommitLog.this.defaultMessageStore.now();
    byteBuffer.put(this.msgStoreItemMemory.array(), 0, maxBlank);
    return new AppendMessageResult(AppendMessageStatus.END_OF_FILE, wroteOffset, maxBlank, msgId, msgInner.getStoreTimestamp(),
        queueOffset, CommitLog.this.defaultMessageStore.now() - beginTimeMills);
}

 

rocketMQ 删除过期文件

标签:删除文件   img   image   inner   cal   ons   buffer   时间   fse   

原文地址:https://www.cnblogs.com/allenwas3/p/12404169.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!