RocketMQ——Consumer篇:向Broker同步消费进度的定时任务
来源:互联网 发布:php可以开发app吗 编辑:程序博客网 时间:2024/05/29 13:47
每隔5秒调用一次MQClientInstance.persistAllConsumerOffset()方法将消费进度向Broker同步。遍历MQClientInstance.consumerTable: ConcurrentHashMap<String/*group */, MQConsumerInner>变量。对于PushConsumer端和PullConsumer端,处理逻辑是一样的,以DefaultMQPushConsumerImpl为例,调用DefaultMQPushConsumerImpl.persistConsumerOffset()方法。
1、获取DefaultMQPushConsumerImpl.rebalanceImpl变量的processQueueTable:ConcurrentHashMap<MessageQueue, ProcessQueue>变量值,取该变量的key值集合,即MessageQueue集合;以该集合为参数调用OffsetStore.persistAll(Set<MessageQueue> mqs)方法;
2、若消息模式是广播(BROADCASTING),即DefaultMQPushConsumerImpl.offsetStore变量初始化为LocalFileOffsetStore对象,在此调用LocalFileOffsetStore.persistAll(Set<MessageQueue> mqs)方法,在此方法中遍历LocalFileOffsetStore.offsetTable:ConcurrentHashMap<MessageQueue,AtomicLong>变量,将包含在第1步的MessageQueue集合中的MessageQueue对象的消费进度持久化到consumerOffset.json物理文件中;
3、若消息模式为集群模式,即DefaultMQPushConsumerImpl.offsetStore变量初始化为RemoteBrokerOffsetStore对象,在此调用RemoteBrokerOffsetStore.persistAll(Set<MessageQueue> mqs)方法,在此方法中遍历RemoteBrokerOffsetStore.offsetTable:ConcurrentHashMap <MessageQueue,AtomicLong>变量;对于包含在第1步的MessageQueue集合中的MessageQueue对象,调用updateConsumeOffsetToBroker(MessageQueuemq, long offset)方法向Broker发送UPDATE_CONSUMER_OFFSET请求码的消费进度信息;
- RocketMQ——Consumer篇:向Broker同步消费进度的定时任务
- RocketMQ——Consumer篇:PULL消费模式下的调度消费服务
- RocketMQ——Consumer篇:PULL模式下的消息消费(DefaultMQPullConsumer)
- RocketMQ——Broker篇
- RocketMQ——Consumer篇:PUSH模式下消费消息(顺序和并发两种)
- RocketMQ 消费进度
- RocketMQ——客户端篇:Producer/Consumer的实例对象
- RocketMQ——Consumer篇:启动过程
- RocketMQ原理解析-consumer 4.长轮询push消息—并发消费消息
- RocketMQ原理解析-consumer 4.长轮询push消息—并发消费消息
- RocketMQ原理解析-consumer 4.长轮询push消息—并发消费消息
- RocketMQ源码分析----Broker处理消费请求
- RocketMQ原理(4)——消息ACK机制及消费进度管理
- RocketMQ——Consumer篇:PUSH模式下拉取消息服务的线程(PullMessageService)
- RocketMQ——Consumer篇:PUSH模式下的消息拉取(DefaultMQPushConsumer)
- RocketMQ原理解析-consumer 5.push消费-顺序消费消息
- RocketMQ原理解析-consumer 5.push消费-顺序消费消息
- RocketMQ原理解析-consumer 5.push消费-顺序消费消息
- 常用的 文件 MIME类型
- 对List集合中的元素进行排序
- HDU
- multi-university 第六场 经验总结
- dedecms如何定时生成站点地图的
- RocketMQ——Consumer篇:向Broker同步消费进度的定时任务
- java基础之BigInteger
- 线性回归
- ajax+php实现观看记录
- 【javascript】数组那些事儿
- Vuejs之路之--style和class的绑定
- TensorFlow的 数据和参数的输入 及变量存储
- python中如何才能采用中文注释
- 1064. 朋友数(20)