[SCB-2378] support publish address configure different port than listen address (#2726)
diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/RegistrationManager.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/RegistrationManager.java
index fb4ae57..5c78652 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/RegistrationManager.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/RegistrationManager.java
@@ -272,6 +272,12 @@
.get();
publicAddressSetting = publicAddressSetting.trim();
+ String publishPortKey = PUBLISH_PORT.replace("{transport_name}", schema);
+ int publishPortSetting = DynamicPropertyFactory.getInstance()
+ .getIntProperty(publishPortKey, 0)
+ .get();
+ int publishPort = publishPortSetting == 0 ? ipPort.getPort() : publishPortSetting;
+
if (publicAddressSetting.isEmpty()) {
InetSocketAddress socketAddress = ipPort.getSocketAddress();
if (socketAddress.getAddress().isAnyLocalAddress()) {
@@ -282,8 +288,8 @@
LOGGER.warn("address {}, auto select a host address to publish {}:{}, maybe not the correct one",
socketAddress,
host,
- socketAddress.getPort());
- return new IpPort(host, ipPort.getPort());
+ publishPort);
+ return new IpPort(host, publishPort);
}
return ipPort;
@@ -296,11 +302,7 @@
.getHostAddress();
}
- String publishPortKey = PUBLISH_PORT.replace("{transport_name}", schema);
- int publishPortSetting = DynamicPropertyFactory.getInstance()
- .getIntProperty(publishPortKey, 0)
- .get();
- int publishPort = publishPortSetting == 0 ? ipPort.getPort() : publishPortSetting;
+
return new IpPort(publicAddressSetting, publishPort);
}