RocketMQ Producer 和NameServer建立连接主要做了什么

本文介绍了RocketMQ版本4.2.0中,Producer与NameServer建立连接的主要目的:拉取Topic路由信息。通过MQClientInstance启动的定时任务,详细探讨了该任务如何获取并更新Producer本地的Topic缓存。
摘要由CSDN通过智能技术生成

版本:4.2.0

producer与nameServer建立连接主要是拉取topic路由信息

MQClientInstance启动的时候会启动一个定时任务

this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
    public void run() {
        try {
            MQClientInstance.this.updateTopicRouteInfoFromNameServer();
        } catch (Exception var2) {
            MQClientInstance.this.log.error("ScheduledTask updateTopicRouteInfoFromNameServer exception", var2);
        }
​
    }
}, 10L, (long)this.clientConfig.getPollNameServerInterval(), TimeUnit.MILLISECONDS);

深入了解一下这个任务在做什么

public void updateTopicRouteInfoFromNameServer() {
    Set<String> topicList = new HashSet();
    Iterator i$ = this.consumerTable.entrySet().iterator();
​
    while(true) {
        Set subList;
        do {
            MQConsumerInner impl;
            do {
                Entry entry;
                if (!i$.hasNext()) {
                    i$ = this.producerTable.entrySet().iterator();
​
                    while(i$.hasNext()) {
                        entry = (Entry)i$.next();
                        MQProducerInner impl = (MQProducerInner)entry.getValue();
                        if (impl != null) {
                            subList = impl.getPublishTopicList();
                            topicList.addAll(subList);
                        }
                    }
​
                    i$ = topicList.iterator();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值