[ https://issues.apache.org/jira/browse/ROCKETMQ-242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16110832#comment-16110832 ]
ASF GitHub Bot commented on ROCKETMQ-242: ----------------------------------------- Github user qqeasonchen commented on a diff in the pull request: https://github.com/apache/incubator-rocketmq/pull/139#discussion_r130866438 --- Diff: client/src/main/java/org/apache/rocketmq/client/impl/factory/MQClientInstance.java --- @@ -255,19 +255,17 @@ public void start() throws MQClientException { } private void startScheduledTask() { - if (null == this.clientConfig.getNamesrvAddr()) { --- End diff -- @Jaskey agree with you , and my question is if user does not specify an namesrv and its purpose is fetch from wsAddr , but client can not fetch namesrvs dymatically , see // If not specified,looking address from name server if (null == this.clientConfig.getNamesrvAddr()) { this.mQClientAPIImpl.fetchNameServerAddr(); } private void startScheduledTask() { if (null == this.clientConfig.getNamesrvAddr()) {.......} > mqclient can not fetch nameSrvAddr periodly > ------------------------------------------- > > Key: ROCKETMQ-242 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-242 > Project: Apache RocketMQ > Issue Type: Bug > Components: rocketmq-client > Affects Versions: 4.0.0-incubating, 4.1.0-incubating > Environment: test and production > Reporter: Eason Chen > Assignee: Xiaorui Wang > Fix For: 4.2.0-incubating > > > when mqclientinstance start, it getNameSrvAddr once by bellow code: > if (null == this.clientConfig.getNamesrvAddr()) { > > this.clientConfig.setNamesrvAddr(this.mQClientAPIImpl.fetchNameServerAddr()); > } > but in startScheduledTask(),it will not start the schedule task if > namesrvAddr is not null > ================code===================== > {code:java} > public void start() throws MQClientException { > synchronized (this) { > switch (this.serviceState) { > case CREATE_JUST: > this.serviceState = ServiceState.START_FAILED; > // If not specified,looking address from name server > *{color:red} if (null == > this.clientConfig.getNamesrvAddr()) { > > this.clientConfig.setNamesrvAddr(this.mQClientAPIImpl.fetchNameServerAddr()); > }{color}* > // Start request-response channel > this.mQClientAPIImpl.start(); > // Start various schedule tasks > this.startScheduledTask(); > // Start pull service > this.pullMessageService.start(); > // Start rebalance service > this.rebalanceService.start(); > // Start push service > > this.defaultMQProducer.getDefaultMQProducerImpl().start(false); > log.info("the client factory [{}] start OK", > this.clientId); > this.serviceState = ServiceState.RUNNING; > break; > case RUNNING: > break; > case SHUTDOWN_ALREADY: > break; > case START_FAILED: > throw new MQClientException("The Factory object[" + > this.getClientId() + "] has been created before, and failed.", null); > default: > break; > } > } > } > private void startScheduledTask() { > *{color:red} if (null == this.clientConfig.getNamesrvAddr()) {{color}* > this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() { > @Override > public void run() { > try { > > MQClientInstance.this.mQClientAPIImpl.fetchNameServerAddr(); > } catch (Exception e) { > log.error("ScheduledTask fetchNameServerAddr > exception", e); > } > } > }, 1000 * 10, 1000 * 60 * 2, TimeUnit.MILLISECONDS); > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)