消息消费进度

编程

分为集群和广播两种

 

集群时,消息进度统一维护在一个地方,多个消费者从同一个地方读取消息消费进度

广播时,消息消费进度文件维护在本地文件中storePath,每个消费者独立维护消息的消费进度

 

消息进度的维护 包括读取,更新,持久化

 

广播时,从本地文件中读取进度信息到内存,如果没有读取到消费进度,继续从.bak文件中读取

集群时,取ProcessQueue中最小消息进度来更新消息消费进度,,消息消费进度的推进取决

于ProceeQueue 中偏移量最小的消息消费速度,为了避免某个消息无法消费,进度无法推进的情况,RocketMQ

引入了一种消息拉取流控措施: DefaultMQPushConsumer#consumeConcurrentlyMaxSp an=

2000 ,消息处理队列ProceeQueue 中最大消息偏移与最小偏移量不能超过该值,如超过

该值,触发流控,将延迟该消息队列的消息拉取。

 

定时消息的第一个设计关键点是, 定时消息单独一个主题: SCHEDULE TOPIC

xx xx , 该主题下队列数量等于MessageStoreConfig#messageDelayLevel 配置的延迟级别数

量, 其对应关系为queueld 等于延迟级别减1 。ScheduleMessageS 巳rvice 为每一个延迟级别

创建一个定时Timer 根据延迟级别对应的延迟时间进行延迟调度。在消息发送时, 如果消

息的延迟级别delay Level 大于0 , 将消息的原主题名称、队列ID 存入消息的属性中,然后

改变消息的主题、队列与延迟主题与延迟主题所属队列, 消息将最终转发到延迟队列的消

费队列。

 

 

以上是 消息消费进度 的全部内容, 来源链接: utcz.com/z/515552.html

回到顶部