消息消费进度
分为集群和广播两种
集群时,消息进度统一维护在一个地方,多个消费者从同一个地方读取消息消费进度
广播时,消息消费进度文件维护在本地文件中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