rocketmq consume学习笔记

来源:互联网 发布:video.js点击全屏播放 编辑:程序博客网 时间:2024/04/30 08:41


consumer与NameServer Broker之间的通讯

先看一下MQClientInstance的startScheduledTask方法,里面有很多定时任务

MQClientInstance.this.mQClientAPIImpl.fetchNameServerAddr(); 定期获取NameServer地址 周期是2分钟

MQClientInstance.this.updateTopicRouteInfoFromNameServer(); 定期更新topicroute信息 周期是pollNameServerInteval 这个可以配置

MQClientInstance.this.cleanOfflineBroker(); MQClientInstance.this.sendHeartbeatToAllBrokerWithLock();

清除断线的broker,向broker发送心跳,周期是heartbeatBrokerInterval 可配置,

MQClientInstance.this.persistAllConsumerOffset();

MQClientInstance.this.adjustThreadPool();


MQClientInstance.sendHeartbeatToAllBrokerWithLock();

这个发送心跳是在DefaultMQPushConsumer start启动的过程中和DefaultMQPushConsumer subscribe订阅topic 都会发送心跳,超时时间3秒


consumer订阅topic

订阅的信息记录在RebalanceImpl一个map中,ConcurrentHashMap<String /* topic */,SubscriptionData>

这个RebalanceImpl在消费消息的时候解释



consumer消费消息

consume消费有2种模式 push 和 pull 本质都是pull,push是封装了pull的过程,然后推送到监听器,

消费service ConsumeMessageService,有2个子类,ConsumeMessageConcurrentlyService和ConsumeMessageOrderlyService

注册registerMessageListener有2中类型,

如果是MessageListenerConcurrently,MessageService就是ConsumeMessageConcurrentlyService

如果是MessageListenerOrderly,MessageService就是ConsumeMessageOrderlyService

是一一对应的。


待写。。。

0 0
原创粉丝点击