RocketMQ 5.0 中引入了一种新的消费模式:Pop 消费模式。
我们知道 RocketMQ 原来有两种消费模式:Pull 模式消费和 Push 模式消费,其中 Push 模式指的是 Broker 将消息主动“推送”给消费者,它的背后其实是消费者在不断地 Pull 消息来实现类似于 Broker “推”消息给消费者的效果。
新引入的 Pop 消费模式主要是用于 Push 消费时将拉消息的动作替换成 Pop 。Pop 消费的行为和 Pull 消费很像,区别在于 Pop 消费的重平衡是在 Broker 端做的,而之前的 Pull 和 Push 消费都是由客户端完成重平衡。
POP_MESSAGE
?请求给 Broker,获取一批消息CheckPoint
?保存在 Broker 中,以便与 ACK 的消息匹配。CheckPoint
会先被保存在内存中,一般来说消息消费很快,所以在内存中就能够与 ACK 消息匹配成功后删除。如果在一段时间(默认 3s)内没有匹配成功,它将会从内存中被删除,转入磁盘等待匹配。CheckPoint
,也会放入磁盘。CheckPoint
?的存在目的是与 ACK 的消息匹配,并将没有匹配的消息重试。
CheckPoint
?的?ReviveTime
?就是它这批消息需要被尝试重试(唤醒)的时间。
1.消费端不对等问题,
2.重平衡造成堆积问题
3.消费端数量大于队列数问题