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

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

@ -24,6 +24,12 @@
"defaultValue": true,
"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",
"type": "java.lang.Integer",

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

Loading…
Cancel
Save