feature: add config for customized local port.

pull/1080/head
kennylong 2 years ago committed by Haotian Zhang
parent be4dc8063b
commit 099508ea04

@ -14,4 +14,5 @@
- [feature:add polaris circuit breaker support](https://github.com/Tencent/spring-cloud-tencent/commit/1dffb915afc79b5d48e325fa497e94f93546a573)
- [fix:fix instance circuit breaker not working bug.](https://github.com/Tencent/spring-cloud-tencent/commit/ca65902a7d65bc5e4e2ccbd68b6f7cb22a346fa9)
- [feature: optimize polaris-discovery-example/discovery-callee-service, add client-ip return.](https://github.com/Tencent/spring-cloud-tencent/commit/d2d66dccbef4b9b858885ae365e8f90e0e5555af)
- [docs:prevent the release of the final version of the sdk.]()
- [docs:prevent the release of the final version of the sdk.](https://github.com/Tencent/spring-cloud-tencent/commit/be4dc8063bf8feb45d1430de979e9a85339b53c8)
- [feature: add config for customized local port.]()

@ -25,6 +25,7 @@ import java.util.Objects;
import com.tencent.cloud.common.metadata.StaticMetadataManager;
import com.tencent.cloud.polaris.PolarisDiscoveryProperties;
import com.tencent.cloud.polaris.context.config.PolarisContextProperties;
import com.tencent.cloud.polaris.extend.consul.ConsulContextProperties;
import com.tencent.cloud.polaris.extend.nacos.NacosContextProperties;
import com.tencent.polaris.client.api.SDKContext;
@ -76,6 +77,7 @@ public class PolarisRegistration implements Registration {
public PolarisRegistration(
PolarisDiscoveryProperties polarisDiscoveryProperties,
@Nullable PolarisContextProperties polarisContextProperties,
@Nullable ConsulContextProperties consulContextProperties,
SDKContext context, StaticMetadataManager staticMetadataManager,
@Nullable NacosContextProperties nacosContextProperties,
@ -89,6 +91,9 @@ public class PolarisRegistration implements Registration {
this.servletWebServerApplicationContext = servletWebServerApplicationContext;
this.reactiveWebServerApplicationContext = reactiveWebServerApplicationContext;
host = polarisContext.getConfig().getGlobal().getAPI().getBindIP();
if (polarisContextProperties != null) {
port = polarisContextProperties.getLocalPort();
}
}
@Override

@ -20,6 +20,7 @@ package com.tencent.cloud.polaris.registry;
import com.tencent.cloud.common.metadata.StaticMetadataManager;
import com.tencent.cloud.polaris.PolarisDiscoveryProperties;
import com.tencent.cloud.polaris.context.config.PolarisContextProperties;
import com.tencent.cloud.polaris.discovery.PolarisDiscoveryAutoConfiguration;
import com.tencent.cloud.polaris.discovery.PolarisDiscoveryHandler;
import com.tencent.cloud.polaris.extend.consul.ConsulContextProperties;
@ -66,11 +67,12 @@ public class PolarisServiceRegistryAutoConfiguration {
@ConditionalOnBean(AutoServiceRegistrationProperties.class)
public PolarisRegistration polarisRegistration(
PolarisDiscoveryProperties polarisDiscoveryProperties,
PolarisContextProperties polarisContextProperties,
@Autowired(required = false) ConsulContextProperties consulContextProperties,
SDKContext context, StaticMetadataManager staticMetadataManager, NacosContextProperties nacosContextProperties,
@Autowired(required = false) ServletWebServerApplicationContext servletWebServerApplicationContext,
@Autowired(required = false) ReactiveWebServerApplicationContext reactiveWebServerApplicationContext) {
return new PolarisRegistration(polarisDiscoveryProperties, consulContextProperties, context,
return new PolarisRegistration(polarisDiscoveryProperties, polarisContextProperties, consulContextProperties, context,
staticMetadataManager, nacosContextProperties,
servletWebServerApplicationContext, reactiveWebServerApplicationContext);
}

@ -22,6 +22,7 @@ import java.util.Map;
import com.tencent.cloud.common.metadata.StaticMetadataManager;
import com.tencent.cloud.polaris.PolarisDiscoveryProperties;
import com.tencent.cloud.polaris.context.config.PolarisContextProperties;
import com.tencent.cloud.polaris.extend.consul.ConsulContextProperties;
import com.tencent.cloud.polaris.extend.nacos.NacosContextProperties;
import com.tencent.polaris.api.config.Configuration;
@ -62,6 +63,10 @@ public class PolarisRegistrationTest {
private PolarisRegistration polarisRegistration3;
private PolarisRegistration polarisRegistration4;
private static int testLocalPort = 10086;
@BeforeEach
void setUp() {
// mock PolarisDiscoveryProperties
@ -70,6 +75,10 @@ public class PolarisRegistrationTest {
doReturn("http").when(polarisDiscoveryProperties).getProtocol();
doReturn(true).when(polarisDiscoveryProperties).isRegisterEnabled();
// mock PolarisContextProperties
PolarisContextProperties polarisContextProperties = mock(PolarisContextProperties.class);
doReturn(testLocalPort).when(polarisContextProperties).getLocalPort();
// mock ConsulContextProperties
ConsulContextProperties consulContextProperties = mock(ConsulContextProperties.class);
doReturn(true).when(consulContextProperties).isEnabled();
@ -79,6 +88,13 @@ public class PolarisRegistrationTest {
nacosContextProperties = mock(NacosContextProperties.class);
doReturn(true).when(nacosContextProperties).isEnabled();
doReturn(true).when(nacosContextProperties).isRegisterEnabled();
doReturn("/").when(nacosContextProperties).getContextPath();
doReturn("cluster").when(nacosContextProperties).getClusterName();
doReturn("").when(nacosContextProperties).getGroup();
doReturn(true).when(nacosContextProperties).isDiscoveryEnabled();
doReturn("").when(nacosContextProperties).getPassword();
doReturn("").when(nacosContextProperties).getUsername();
doReturn("").when(nacosContextProperties).getServerAddr();
// mock SDKContext
APIConfig apiConfig = mock(APIConfig.class);
@ -106,15 +122,19 @@ public class PolarisRegistrationTest {
ReactiveWebServerApplicationContext reactiveWebServerApplicationContext = mock(ReactiveWebServerApplicationContext.class);
doReturn(reactiveWebServer).when(reactiveWebServerApplicationContext).getWebServer();
polarisRegistration1 = new PolarisRegistration(polarisDiscoveryProperties, consulContextProperties,
polarisRegistration1 = new PolarisRegistration(polarisDiscoveryProperties, null, consulContextProperties,
polarisContext, staticMetadataManager, nacosContextProperties,
servletWebServerApplicationContext, null);
polarisRegistration2 = new PolarisRegistration(polarisDiscoveryProperties, consulContextProperties,
polarisRegistration2 = new PolarisRegistration(polarisDiscoveryProperties, null, consulContextProperties,
polarisContext, staticMetadataManager, nacosContextProperties,
null, reactiveWebServerApplicationContext);
polarisRegistration3 = new PolarisRegistration(polarisDiscoveryProperties, consulContextProperties,
polarisRegistration3 = new PolarisRegistration(polarisDiscoveryProperties, null, consulContextProperties,
polarisContext, staticMetadataManager, nacosContextProperties,
null, null);
polarisRegistration4 = new PolarisRegistration(polarisDiscoveryProperties, polarisContextProperties, consulContextProperties,
polarisContext, staticMetadataManager, nacosContextProperties,
null, null);
}
@ -139,6 +159,7 @@ public class PolarisRegistrationTest {
catch (RuntimeException e) {
assertThat(e.getMessage()).isEqualTo("Unsupported web type.");
}
assertThat(polarisRegistration4.getPort()).isEqualTo(testLocalPort);
}
@Test
@ -162,7 +183,7 @@ public class PolarisRegistrationTest {
Map<String, String> metadata = polarisRegistration1.getMetadata();
assertThat(metadata).isNotNull();
assertThat(metadata).isNotEmpty();
assertThat(metadata.size()).isEqualTo(3);
assertThat(metadata.size()).isEqualTo(4);
assertThat(metadata.get("key1")).isEqualTo("value1");
}

@ -52,7 +52,8 @@ public class PolarisContextAutoConfiguration {
@ConditionalOnMissingBean
public SDKContext polarisContext(PolarisContextProperties properties, Environment environment, List<PolarisConfigModifier> modifierList) throws PolarisException {
return SDKContext.initContextByConfig(properties.configuration(modifierList,
() -> environment.getProperty("spring.cloud.client.ip-address")));
() -> environment.getProperty("spring.cloud.client.ip-address"),
() -> environment.getProperty("spring.cloud.polaris.local-port", Integer.class, 0)));
}
@Bean

@ -52,6 +52,11 @@ public class PolarisContextProperties {
*/
private String localIpAddress;
/**
* current server local port.
*/
private Integer localPort;
/**
* If polaris enabled.
*/
@ -67,7 +72,7 @@ public class PolarisContextProperties {
*/
private String service;
public Configuration configuration(List<PolarisConfigModifier> modifierList, Supplier<String> ipAddressSupplier) {
public Configuration configuration(List<PolarisConfigModifier> modifierList, Supplier<String> ipAddressSupplier, Supplier<Integer> portSupplier) {
// 1. Read user-defined polaris.yml configuration
ConfigurationImpl configuration = (ConfigurationImpl) ConfigAPIFactory
.defaultConfig(ConfigProvider.DEFAULT_CONFIG);
@ -78,6 +83,9 @@ public class PolarisContextProperties {
defaultHost = ipAddressSupplier.get();
this.localIpAddress = defaultHost;
}
if (this.localPort == null || this.localPort <= 0) {
this.localPort = portSupplier.get();
}
configuration.getGlobal().getAPI().setBindIP(defaultHost);
@ -110,6 +118,14 @@ public class PolarisContextProperties {
this.localIpAddress = localIpAddress;
}
public Integer getLocalPort() {
return localPort;
}
public void setLocalPort(Integer localPort) {
this.localPort = localPort;
}
public Boolean getEnabled() {
return enabled;
}

Loading…
Cancel
Save