Rocketmq 拉取消息的时候,可能会保存消费进度的哦!且看一下的截图
因为拉取到的消息后,消费进度先刷 内存的。之后,由定时任务推送到 broker 端的。如果是 集群模式,消费进度都是保存在 broker 端的。
这里设置了标志位,这种方式非常聪明,减少了协议的头部的大小
通过这 3 张截图,我们可以大致了解到。consumer 处理第一次消费这个队列的数据外,第二次之后,broker 都将自动保存 这个消费端的消费进度的。而且。broker 已有一个定时任务保存各个 消费端的消费进度的。
消费端也会有一个定时任务,定时将消费进度推送到 broker 端。为什么不是 consumer 一旦请求了,broker 端就里面进行持久化呢?因为如果是这样的话,broker 的压力会相对大一次。可能 10s 就会有1000 个并发在请求持久化。如果消费进度推送到 broker 。统一由 broker 的定时任务来进行持久化的话,那么,broker 的压力会相对小点。这个是个人的理解。最大程度减少无效的并发。