diff --git a/broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java b/broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java index 60f287af584e9a2a803fc52eb952976096318c09..a4968cba505021232ae8c50014aa53722f2557df 100644 --- a/broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java +++ b/broker/src/main/java/org/apache/rocketmq/broker/BrokerController.java @@ -741,7 +741,7 @@ public class BrokerController { log.error("registerBrokerAll Exception", e); } } - }, 1000 * 10, 1000 * 30, TimeUnit.MILLISECONDS); + }, 1000 * 10, Math.max(10000, Math.min(brokerConfig.getRegisterNameServerPeriod(), 60000)), TimeUnit.MILLISECONDS); if (this.brokerStatsManager != null) { this.brokerStatsManager.start(); diff --git a/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java b/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java index a9e54aa3e65e9d723a56a89fafe5e0dbdd4802b6..c0a4b20211016a2ebc045b565a33c6c63ee45acf 100644 --- a/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java +++ b/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java @@ -245,7 +245,10 @@ public class AdminBrokerProcessor implements NettyRequestProcessor { topicConfig.setTopicSysFlag(requestHeader.getTopicSysFlag() == null ? 0 : requestHeader.getTopicSysFlag()); this.brokerController.getTopicConfigManager().updateTopicConfig(topicConfig); - this.brokerController.registerBrokerAll(false, true, true); + + if (brokerController.getBrokerConfig().getRegisterNameServerPeriod() == 0) { + this.brokerController.registerBrokerAll(false, true, true); + } return null; } diff --git a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java index fa9a9ef56151237d6acaed1dafaebcad8377e565..7caf83037c27fc6159f69f03b1397d29ec09b580 100644 --- a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java +++ b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java @@ -136,6 +136,16 @@ public class BrokerConfig { private boolean forceRegister = true; + /** + * + * This configurable item defines interval of topics registration of broker to name server. Allowing values are + * between 10, 000 and 60, 000 milliseconds. + * + * If set to 0, newly created topics will be immediately reported to name servers and interval of periodical + * registration defaults to 10, 000 in milliseconds. + */ + private int registerNameServerPeriod = 1000 * 30; + public boolean isTraceOn() { return traceOn; } @@ -617,4 +627,12 @@ public class BrokerConfig { public void setForceRegister(boolean forceRegister) { this.forceRegister = forceRegister; } + + public int getRegisterNameServerPeriod() { + return registerNameServerPeriod; + } + + public void setRegisterNameServerPeriod(int registerNameServerPeriod) { + this.registerNameServerPeriod = registerNameServerPeriod; + } }