consume queue

consume queue是消息的逻辑队列,相当于字典的目录,用来指定消息在物理文件commit log上的位置。

我们可以在配置中指定consumequeue与commitlog存储的目录 每个topic下的每个queue都有一个对应的consumequeue文件,比如:

${rocketmq.home}/store/consumequeue/${topicName}/${queueId}/${fileName} 每个文件大小6000000字节,大概5.7M左右,默认配置能够存储30W消息,每当消费满了的时候会从新建立一个新文件进行存储,每次都会取最后一个文件当作 consumeQueue存储,一旦最后一个文件满了,就会重新创建一个文件,添加到末尾。 那么问题来啦?这块涉及到了内存映射文件,刷盘的策略是怎么样的: 当前刷盘服务是FlushConsumeQueueService,采用的是1000ms的频率进行刷盘操作

ConsumeQueue的日志格式

消息格式如下:

  1. CommitLog Offset是指这条消息在Commit Log文件中的实际偏移量
  2. Size存储中消息的大小
  3. Message Tag HashCode存储消息的Tag的哈希值:主要用于订阅时消息过滤(订阅时如果指定了Tag,会根据HashCode来快速查找到订阅的消息)

消息消费失败如何进行重试?

results matching ""

    No results matching ""