From 2d8bf001b3caa5784947c94352f2235360b31e7c Mon Sep 17 00:00:00 2001 From: cserwen Date: Tue, 4 Jan 2022 18:02:08 +0800 Subject: [PATCH] [ISSUE #58] enable the service to support multiple namesrvs (#59) * enable the service to support multiple namesrvs * use @ to split the namesrv of different clusters Co-authored-by: dengzhiwen1 --- .../dashboard/config/RMQConfigure.java | 18 ++++++++++++++++++ .../dashboard/service/impl/OpsServiceImpl.java | 3 ++- src/main/resources/application.properties | 5 +++-- src/main/resources/static/src/ops.js | 3 ++- src/main/resources/static/view/pages/ops.html | 8 +++++--- .../controller/BaseControllerTest.java | 1 + 6 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/apache/rocketmq/dashboard/config/RMQConfigure.java b/src/main/java/org/apache/rocketmq/dashboard/config/RMQConfigure.java index 1dcd7df..d9149ef 100644 --- a/src/main/java/org/apache/rocketmq/dashboard/config/RMQConfigure.java +++ b/src/main/java/org/apache/rocketmq/dashboard/config/RMQConfigure.java @@ -16,6 +16,7 @@ */ package org.apache.rocketmq.dashboard.config; +import com.google.common.base.Splitter; import org.apache.commons.lang3.StringUtils; import org.apache.rocketmq.common.MixAll; import org.slf4j.Logger; @@ -29,6 +30,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; import java.io.File; +import java.util.List; import static org.apache.rocketmq.client.ClientConfig.SEND_MESSAGE_WITH_VIP_CHANNEL_PROPERTY; @@ -57,6 +59,8 @@ public class RMQConfigure { private Long timeoutMillis; + private String namesrvAddrs; + public String getAccessKey() { return accessKey; } @@ -77,6 +81,20 @@ public class RMQConfigure { return namesrvAddr; } + public String getNamesrvAddrs() { + return namesrvAddrs; + } + + public void setNamesrvAddrs(String namesrvAddrs) { + if (StringUtils.isNotBlank(namesrvAddrs)) { + this.namesrvAddrs = namesrvAddrs; + List nameSrvAddrList = Splitter.on("@").splitToList(this.namesrvAddrs); + if (!nameSrvAddrList.isEmpty()) { + this.setNamesrvAddr(nameSrvAddrList.get(0)); + } + } + } + public void setNamesrvAddr(String namesrvAddr) { if (StringUtils.isNotBlank(namesrvAddr)) { this.namesrvAddr = namesrvAddr; diff --git a/src/main/java/org/apache/rocketmq/dashboard/service/impl/OpsServiceImpl.java b/src/main/java/org/apache/rocketmq/dashboard/service/impl/OpsServiceImpl.java index 2d98e12..1b92ac1 100644 --- a/src/main/java/org/apache/rocketmq/dashboard/service/impl/OpsServiceImpl.java +++ b/src/main/java/org/apache/rocketmq/dashboard/service/impl/OpsServiceImpl.java @@ -46,7 +46,8 @@ public class OpsServiceImpl extends AbstractCommonService implements OpsService @Override public Map homePageInfo() { Map homePageInfoMap = Maps.newHashMap(); - homePageInfoMap.put("namesvrAddrList", Splitter.on(";").splitToList(configure.getNamesrvAddr())); + homePageInfoMap.put("currentNamesrv", configure.getNamesrvAddr()); + homePageInfoMap.put("namesvrAddrList", Splitter.on("@").splitToList(configure.getNamesrvAddrs())); homePageInfoMap.put("useVIPChannel", Boolean.valueOf(configure.getIsVIPChannel())); homePageInfoMap.put("useTLS", configure.isUseTLS()); return homePageInfoMap; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 335ac69..b0a6be0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -31,8 +31,9 @@ spring.http.encoding.enabled=true spring.http.encoding.force=true logging.level.root=INFO logging.config=classpath:logback.xml -#if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876 -rocketmq.config.namesrvAddr= +#if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, default localhost:9876 +#use @ to distinct the namesrv of different clusters +rocketmq.config.namesrvAddrs= #if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true rocketmq.config.isVIPChannel= #timeout for mqadminExt, default 5000ms diff --git a/src/main/resources/static/src/ops.js b/src/main/resources/static/src/ops.js index 8aab329..c539080 100644 --- a/src/main/resources/static/src/ops.js +++ b/src/main/resources/static/src/ops.js @@ -30,6 +30,7 @@ app.controller('opsController', ['$scope', '$location', '$http', 'Notification', $scope.namesvrAddrList = resp.data.namesvrAddrList; $scope.useVIPChannel = resp.data.useVIPChannel; $scope.useTLS = resp.data.useTLS; + $scope.selectedNamesrv = resp.data.currentNamesrv; } else { Notification.error({message: resp.errMsg, delay: 2000}); } @@ -43,7 +44,7 @@ app.controller('opsController', ['$scope', '$location', '$http', 'Notification', $http({ method: "POST", url: "ops/updateNameSvrAddr.do", - params: {nameSvrAddrList: $scope.namesvrAddrList.join(";")} + params: {nameSvrAddrList: $scope.selectedNamesrv} }).success(function (resp) { if (resp.status == 0) { Notification.info({message: "SUCCESS", delay: 2000}); diff --git a/src/main/resources/static/view/pages/ops.html b/src/main/resources/static/view/pages/ops.html index 8dc0f4d..55ba6b9 100644 --- a/src/main/resources/static/view/pages/ops.html +++ b/src/main/resources/static/view/pages/ops.html @@ -17,9 +17,11 @@

NameServerAddressList

-
- +
+