concept
1. 最小位点(Min Offset)
- 定义:最小位点是指消息队列中当前还保留的最早消息的偏移量(offset)。
- 作用:RocketMQ 会定期清理过期或者被消费确认的消息,清理后最早还保留的消息的偏移量即为最小位点。
- 意义:
- 消费者不能再消费小于该最小位点的消息,因为这些消息已经被删除。
- 可以理解为队列中最“旧”的消息的起点。
2. 最大位点(Max Offset)
- 定义:最大位点是消息队列当前写入的最新消息的偏移量。
- 作用:表示当前消息队列中最新消息的位置。
- 意义:
- 消费者消费的消息偏移量一般在最小位点和最大位点之间。
- 最大位点通常是下一条将要写入消息的偏移量,也就是队尾的偏移量。
总结
概念 | 解释 | 作用与意义 |
---|---|---|
最小位点 | 队列中最早保留消息的偏移量 | 消息清理后的起点,消费不可再访问之前的消息 |
最大位点 | 队列中最新写入消息的偏移量 | 表示消息队列的最新位置,消费终点 |
1. 代理者位点(Broker Offset)
- 定义:代理者位点指的是消息存储服务器(Broker)端当前消息队列的最大偏移量,也就是消息队列中最新写入消息的位置。
- 作用:
- 代表 Broker 已经存储的消息的最新位置。
- 当生产者发送消息到Broker时,Broker会将消息追加到消息队列的末尾,代理者位点随之更新。
- 特点:
- 这个位点反映的是消息生产端的进度,是消息存储的“终点”。
- 消费者的消费进度不能超过代理者位点。
2. 消费者位点(Consumer Offset)
- 定义:消费者位点指的是消费者组(Consumer Group)当前消费到的消息偏移量,表示消费者已经消费确认的最后一条消息的位置。
- 作用:
- 标识消费者消费进度,消费者从该偏移量之后的位置开始消费下一条消息。
- 方便消费者重启或者断线重连后,从上次的消费位点继续消费,保证消息不丢失也不重复消费。
- 特点:
- 消费者位点是存储在Broker或者专门的消费进度存储中(如NameServer或专门的Offset存储机制)。
- 不同消费者组有独立的消费位点。
二者的关系
- 代理者位点表示的是消息队列生产端最新消息的位置,是消息存储的边界。
- 消费者位点表示的是某个消费者组消费的进度,是消费端的进度标记。
- 消费者位点一定不会超过代理者位点(否则消费者消费到了不存在的消息)。
举例说明
假设某条消息队列:
- Broker 当前最新消息偏移量(代理者位点)是 1000,表示已经存储了 0~999 条消息。
- 某个消费者组的消费进度(消费者位点)是 950,表示已经消费了 0~949 条消息,下一条消费的是偏移量 950 的消息。