美文网首页
store模块阅读2:AppendMessageStatus 与

store模块阅读2:AppendMessageStatus 与

作者: 赤子心_d709 | 来源:发表于2017-09-26 14:42 被阅读42次

说明

AppendMessageStatus 用于描述追加消息到日志时的状态
AppendMessageResult 用于描述追加消息到日志的结果,包含有上述状态
部分源码可能要参考commitLog类更方便理解,后面再讲

AppendMessageStatus

这是一个枚举类
描述追加消息到日志时的状态,主要涉及消息大小与文件剩余大小的比较

/**
 * When write a message to the commit log, returns code
 * 写消息到commitLog时,返回的状态码
 */
public enum AppendMessageStatus {
    PUT_OK,//正常情况
    END_OF_FILE, //当消息(含批量)所需的长度超过文件剩余长度时返回
    MESSAGE_SIZE_EXCEEDED, //当消息(含批量)所需的长度超过了MessageStoreConfig.maxMessageSize(默认4M)时触发,代表单个消息过大
    PROPERTIES_SIZE_EXCEEDED,//当单个消息所需的prop文件长度超过了Short.MAX_VALUE时触发
    UNKNOWN_ERROR,//其他未知错误
}

AppendMessageResult

When write a message to the commit log, returns results
描述写消息至commitLog时返回的结果

属性

// Return code
    private AppendMessageStatus status;//状态

    // Where to start writing
    /**
     * 开始写的位置
     * 是真正的物理位置,参考CommitLog的调用,是fileFromOffset + byteBuffer.position();
     */
    private long wroteOffset;

    // Write Bytes
    private int wroteBytes;//写多少个字节

    // Message ID
    private String msgId;//消息id

    // Message storage timestamp
    private long storeTimestamp;//消息存储的时间

    // Consume queue's offset(step by one)
    /**
     * 消息的逻辑地址,代表是topic-queueId这个队列中的第几个位置,即下标
     */
    private long logicsOffset;

    private long pagecacheRT = 0;//这个不知道有什么用,get,set方法也没调用

    /**
     * 写入的消息数量,默认是1
     * 只有在处理批量消息MessageExtBatch时,会设置为其他值
     */
    private int msgNum = 1;

这里注意:

wroteOffset是物理地址,可以参考refer中的图如下图
logicsOffset:逻辑地址,代表是这个队列中的第几个位置,即下标
msgNum:默认1,当处理批量消息MessageExtBatch时,会设置为其他值

存储结构

方法

基本都是get,set构造方法
就多了一个isOk方法很简单

    //添加状态是否ok
    public boolean isOk() {
        return this.status == AppendMessageStatus.PUT_OK;
    }

问题

批量消息时共用一个msgId吗?

看到批量消息再来回答

refer

https://fdx321.github.io/2017/08/22/%E3%80%90RocketMQ%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E3%80%916-%E6%B6%88%E6%81%AF%E5%AD%98%E5%82%A8/

相关文章

网友评论

      本文标题:store模块阅读2:AppendMessageStatus 与

      本文链接:https://www.haomeiwen.com/subject/ovusextx.html