You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/07/12 02:16:48 UTC
[dubbo] branch master updated: Enhance metadata report config.
(#8268)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 3548eab Enhance metadata report config. (#8268)
3548eab is described below
commit 3548eab66817de1a87eae2d9c91fcd006da6a4d0
Author: 赵延 <10...@qq.com>
AuthorDate: Mon Jul 12 10:16:28 2021 +0800
Enhance metadata report config. (#8268)
* 1.metadata-report-config support protocol and port.
2.make ConfigCenterConfig setAddress be same with RegistryConfig.
* revert provider-demo-xml xml config.
---
.../apache/dubbo/config/ConfigCenterConfig.java | 20 ++++---
.../apache/dubbo/config/MetadataReportConfig.java | 63 ++++++++++++++++++++--
.../org/apache/dubbo/config/RegistryConfig.java | 5 --
.../src/main/resources/META-INF/dubbo.xsd | 10 ++++
4 files changed, 83 insertions(+), 15 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
index b0d5b5a..2ca2f7f 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ConfigCenterConfig.java
@@ -32,6 +32,8 @@ import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_CONFIGFIL
import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_ENABLE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;
+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;
+import static org.apache.dubbo.common.utils.PojoUtils.updatePropertyIfAbsent;
import static org.apache.dubbo.config.Constants.CONFIG_APP_CONFIGFILE_KEY;
import static org.apache.dubbo.config.Constants.ZOOKEEPER_PROTOCOL;
@@ -147,12 +149,18 @@ public class ConfigCenterConfig extends AbstractConfig {
if (address != null) {
try {
URL url = URL.valueOf(address);
- setUsername(url.getUsername());
- setPassword(url.getPassword());
- updateIdIfAbsent(url.getProtocol());
- updateProtocolIfAbsent(url.getProtocol());
- updatePortIfAbsent(url.getPort());
- updateParameters(url.getParameters());
+
+ // Refactor since 2.7.8
+ updatePropertyIfAbsent(this::getUsername, this::setUsername, url.getUsername());
+ updatePropertyIfAbsent(this::getPassword, this::setPassword, url.getPassword());
+ updatePropertyIfAbsent(this::getProtocol, this::setProtocol, url.getProtocol());
+ updatePropertyIfAbsent(this::getPort, this::setPort, url.getPort());
+
+ Map<String, String> params = url.getParameters();
+ if (CollectionUtils.isNotEmptyMap(params)) {
+ params.remove(BACKUP_KEY);
+ }
+ updateParameters(params);
} catch (Exception ignored) {
}
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
index 2a1272d..24b622b 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config;
import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.support.Parameter;
@@ -25,6 +26,8 @@ import java.util.Map;
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;
import static org.apache.dubbo.common.constants.CommonConstants.PROPERTIES_CHAR_SEPARATOR;
+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;
+import static org.apache.dubbo.common.utils.PojoUtils.updatePropertyIfAbsent;
import static org.apache.dubbo.common.utils.StringUtils.isEmpty;
/**
@@ -41,16 +44,23 @@ public class MetadataReportConfig extends AbstractConfig {
private static final String PREFIX_TAG = StringUtils.camelToSplitName(
MetadataReportConfig.class.getSimpleName().substring(0, MetadataReportConfig.class.getSimpleName().length() - 6), PROPERTIES_CHAR_SEPARATOR);
- // Register center address
+ private String protocol;
+
+ // metadata center address
private String address;
- // Username to login register center
+ /**
+ * Default port for metadata center
+ */
+ private Integer port;
+
+ // Username to login metadata center
private String username;
- // Password to login register center
+ // Password to login metadata center
private String password;
- // Request timeout in milliseconds for register center
+ // Request timeout in milliseconds for metadata center
private Integer timeout;
/**
@@ -118,6 +128,14 @@ public class MetadataReportConfig extends AbstractConfig {
}
+ public String getProtocol() {
+ return protocol;
+ }
+
+ public void setProtocol(String protocol) {
+ this.protocol = protocol;
+ }
+
@Parameter(excluded = true)
public String getAddress() {
return address;
@@ -125,6 +143,32 @@ public class MetadataReportConfig extends AbstractConfig {
public void setAddress(String address) {
this.address = address;
+ if (address != null) {
+ try {
+ URL url = URL.valueOf(address);
+
+ // Refactor since 2.7.8
+ updatePropertyIfAbsent(this::getUsername, this::setUsername, url.getUsername());
+ updatePropertyIfAbsent(this::getPassword, this::setPassword, url.getPassword());
+ updatePropertyIfAbsent(this::getProtocol, this::setProtocol, url.getProtocol());
+ updatePropertyIfAbsent(this::getPort, this::setPort, url.getPort());
+
+ Map<String, String> params = url.getParameters();
+ if (CollectionUtils.isNotEmptyMap(params)) {
+ params.remove(BACKUP_KEY);
+ }
+ updateParameters(params);
+ } catch (Exception ignored) {
+ }
+ }
+ }
+
+ public Integer getPort() {
+ return port;
+ }
+
+ public void setPort(Integer port) {
+ this.port = port;
}
public String getUsername() {
@@ -238,4 +282,15 @@ public class MetadataReportConfig extends AbstractConfig {
public void setFile(String file) {
this.file = file;
}
+
+ public void updateParameters(Map<String, String> parameters) {
+ if (CollectionUtils.isEmptyMap(parameters)) {
+ return;
+ }
+ if (this.parameters == null) {
+ this.parameters = parameters;
+ } else {
+ this.parameters.putAll(parameters);
+ }
+ }
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
index 3d01240..2de4970 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
@@ -223,11 +223,6 @@ public class RegistryConfig extends AbstractConfig {
updatePropertyIfAbsent(this::getProtocol, this::setProtocol, url.getProtocol());
updatePropertyIfAbsent(this::getPort, this::setPort, url.getPort());
-// setUsername(url.getUsername());
-// setPassword(url.getPassword());
-// updateIdIfAbsent(url.getProtocol());
-// updateProtocolIfAbsent(url.getProtocol());
-// updatePortIfAbsent(url.getPort());
Map<String, String> params = url.getParameters();
if (CollectionUtils.isNotEmptyMap(params)) {
params.remove(BACKUP_KEY);
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
index a1f6838..9df1f9a 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
@@ -634,11 +634,21 @@
<xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
+ <xsd:attribute name="protocol" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[ The config center protocol. ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
<xsd:attribute name="address" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation><![CDATA[ The metadataReport address. ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
+ <xsd:attribute name="port" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[ The registry default port. ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
<xsd:attribute name="username" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation><![CDATA[ The metadataReport username. ]]></xsd:documentation>