From 9d11b56c3699c1bf3238bfca842c7c1ee7255d9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=82=85=E5=86=B2?= Date: Tue, 22 May 2018 21:09:54 +0800 Subject: [PATCH] Issue #311 improve broker register topicrouter info performance --- .../rocketmq/broker/BrokerController.java | 2 +- .../broker/processor/AdminBrokerProcessor.java | 5 ++++- .../apache/rocketmq/common/BrokerConfig.java | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) 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 60f287af..a4968cba 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 a9e54aa3..c0a4b202 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 fa9a9ef5..7caf8303 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; + } } -- GitLab