fix: polaris.discovery.heartbeat.enabled not effective.

pull/1713/head
zihenzzz 1 month ago committed by Haotian Zhang
parent 199331ca12
commit 9b1b3ee334

@ -19,3 +19,4 @@
- [feat: support config event and monitor address list.](https://github.com/Tencent/spring-cloud-tencent/pull/1708) - [feat: support config event and monitor address list.](https://github.com/Tencent/spring-cloud-tencent/pull/1708)
- [fix:replace HttpClient with HttpURLConnection for JDK 8 compatibility.](https://github.com/Tencent/spring-cloud-tencent/pull/1709) - [fix:replace HttpClient with HttpURLConnection for JDK 8 compatibility.](https://github.com/Tencent/spring-cloud-tencent/pull/1709)
- [feat:Modify the annotations.](https://github.com/Tencent/spring-cloud-tencent/pull/1712) - [feat:Modify the annotations.](https://github.com/Tencent/spring-cloud-tencent/pull/1712)
- [fix: polaris.discovery.heartbeat.enabled not effective.](https://github.com/Tencent/spring-cloud-tencent/pull/1713)

@ -83,6 +83,11 @@ public class PolarisDiscoveryProperties {
@Value("${spring.cloud.polaris.discovery.register:#{true}}") @Value("${spring.cloud.polaris.discovery.register:#{true}}")
private Boolean registerEnabled; private Boolean registerEnabled;
/**
* Enable heartbeat or not.
*/
private Boolean heartbeatEnabled = true;
/** /**
* Heartbeat interval ( 0 < interval <= 60). * Heartbeat interval ( 0 < interval <= 60).
* Time unit: second. Default: 5. * Time unit: second. Default: 5.
@ -208,6 +213,14 @@ public class PolarisDiscoveryProperties {
this.serviceListRefreshInterval = serviceListRefreshInterval; this.serviceListRefreshInterval = serviceListRefreshInterval;
} }
public Boolean getHeartbeatEnabled() {
return heartbeatEnabled;
}
public void setHeartbeatEnabled(Boolean heartbeatEnabled) {
this.heartbeatEnabled = heartbeatEnabled;
}
public Integer getHeartbeatInterval() { public Integer getHeartbeatInterval() {
if (this.heartbeatInterval <= 0 || this.heartbeatInterval > 60) { if (this.heartbeatInterval <= 0 || this.heartbeatInterval > 60) {
heartbeatInterval = DEFAULT_REGISTRY_HEARTBEAT_TIME_INTERVAL; heartbeatInterval = DEFAULT_REGISTRY_HEARTBEAT_TIME_INTERVAL;
@ -291,6 +304,7 @@ public class PolarisDiscoveryProperties {
", protocol='" + protocol + '\'' + ", protocol='" + protocol + '\'' +
", enabled=" + enabled + ", enabled=" + enabled +
", registerEnabled=" + registerEnabled + ", registerEnabled=" + registerEnabled +
", heartbeatEnabled=" + heartbeatEnabled +
", heartbeatInterval=" + heartbeatInterval + ", heartbeatInterval=" + heartbeatInterval +
", healthCheckUrl='" + healthCheckUrl + '\'' + ", healthCheckUrl='" + healthCheckUrl + '\'' +
", serviceListRefreshInterval=" + serviceListRefreshInterval + ", serviceListRefreshInterval=" + serviceListRefreshInterval +

@ -127,7 +127,6 @@ public class PolarisServiceRegistry implements ServiceRegistry<PolarisRegistrati
instanceRegisterRequest.setRegion(staticMetadataManager.getRegion()); instanceRegisterRequest.setRegion(staticMetadataManager.getRegion());
instanceRegisterRequest.setZone(staticMetadataManager.getZone()); instanceRegisterRequest.setZone(staticMetadataManager.getZone());
instanceRegisterRequest.setCampus(staticMetadataManager.getCampus()); instanceRegisterRequest.setCampus(staticMetadataManager.getCampus());
instanceRegisterRequest.setTtl(polarisDiscoveryProperties.getHeartbeatInterval());
instanceRegisterRequest.setMetadata(registration.getMetadata()); instanceRegisterRequest.setMetadata(registration.getMetadata());
instanceRegisterRequest.setExtendedMetadata(registration.getExtendedMetadata()); instanceRegisterRequest.setExtendedMetadata(registration.getExtendedMetadata());
instanceRegisterRequest.setProtocol(polarisDiscoveryProperties.getProtocol()); instanceRegisterRequest.setProtocol(polarisDiscoveryProperties.getProtocol());
@ -144,16 +143,24 @@ public class PolarisServiceRegistry implements ServiceRegistry<PolarisRegistrati
try { try {
ProviderAPI providerClient = polarisSDKContextManager.getProviderAPI(); ProviderAPI providerClient = polarisSDKContextManager.getProviderAPI();
InstanceRegisterResponse instanceRegisterResponse; InstanceRegisterResponse instanceRegisterResponse;
if (StringUtils.isBlank(polarisDiscoveryProperties.getHealthCheckUrl())) { if (polarisDiscoveryProperties.getHeartbeatEnabled()) {
instanceRegisterResponse = providerClient.registerInstance(instanceRegisterRequest); instanceRegisterRequest.setTtl(polarisDiscoveryProperties.getHeartbeatInterval());
if (StringUtils.isBlank(polarisDiscoveryProperties.getHealthCheckUrl())) {
instanceRegisterResponse = providerClient.registerInstance(instanceRegisterRequest);
}
else {
instanceRegisterResponse = providerClient.register(instanceRegisterRequest);
InstanceHeartbeatRequest heartbeatRequest = new InstanceHeartbeatRequest();
BeanUtils.copyProperties(instanceRegisterRequest, heartbeatRequest);
heartbeatRequest.setInstanceID(instanceRegisterResponse.getInstanceId());
// Start the heartbeat thread after the registration is successful.
heartbeat(heartbeatRequest);
}
} }
else { else {
// Heartbeat is disabled
instanceRegisterResponse = providerClient.register(instanceRegisterRequest); instanceRegisterResponse = providerClient.register(instanceRegisterRequest);
InstanceHeartbeatRequest heartbeatRequest = new InstanceHeartbeatRequest(); LOGGER.info("Registered instance without heartbeat.");
BeanUtils.copyProperties(instanceRegisterRequest, heartbeatRequest);
heartbeatRequest.setInstanceID(instanceRegisterResponse.getInstanceId());
// Start the heartbeat thread after the registration is successful.
heartbeat(heartbeatRequest);
} }
registration.setInstanceId(instanceRegisterResponse.getInstanceId()); registration.setInstanceId(instanceRegisterResponse.getInstanceId());
LOGGER.info("polaris registry, {} {} {} {}:{} {} {} {} {} register finished", polarisDiscoveryProperties.getNamespace(), LOGGER.info("polaris registry, {} {} {} {}:{} {} {} {} {} register finished", polarisDiscoveryProperties.getNamespace(),

@ -24,6 +24,12 @@
"defaultValue": true, "defaultValue": true,
"description": "enable polaris registration or not." "description": "enable polaris registration or not."
}, },
{
"name": "spring.cloud.polaris.discovery.heartbeat-enabled",
"type": "java.lang.Boolean",
"defaultValue": true,
"description": "enable polaris heartbeat or not."
},
{ {
"name": "spring.cloud.polaris.discovery.heartbeat-interval", "name": "spring.cloud.polaris.discovery.heartbeat-interval",
"type": "java.lang.Integer", "type": "java.lang.Integer",

@ -110,6 +110,7 @@ public class PolarisDiscoveryPropertiesTest {
+ ", protocol='HTTP'" + ", protocol='HTTP'"
+ ", enabled=true" + ", enabled=true"
+ ", registerEnabled=true" + ", registerEnabled=true"
+ ", heartbeatEnabled=true"
+ ", heartbeatInterval=20" + ", heartbeatInterval=20"
+ ", healthCheckUrl='/health'" + ", healthCheckUrl='/health'"
+ ", serviceListRefreshInterval=1000" + ", serviceListRefreshInterval=1000"

Loading…
Cancel
Save