diff --git a/README-zh.md b/README-zh.md index ba912d0c..b2eb0726 100644 --- a/README-zh.md +++ b/README-zh.md @@ -57,19 +57,20 @@ Example 列表: - [PolarisMesh](https://github.com/polarismesh)接入相关的样例: - [服务发现](spring-cloud-tencent-examples/polaris-discovery-example/README-zh.md) - + - [故障熔断](spring-cloud-tencent-examples/polaris-circuitbreaker-example/README-zh.md) - + - [限流](spring-cloud-tencent-examples/polaris-ratelimit-example/README-zh.md) - + - [网关](spring-cloud-tencent-examples/polaris-gateway-example/README-zh.md) +更多详细功能,请参考[polaris-java](https://github.com/polarismesh/polaris-java/blob/main/README-zh.md)。 + ## 版本号规范 采取与Spring Cloud大版本号相关的版本策略。 -项目的版本号格式为 ```大版本号.小版本号.补丁版本号.对应Spring Cloud的大版本号.对应Spring Cloud的小版本号-发布类型``` 的形式。 -大版本号、小版本号、补丁版本号的类型为数字,从 0 开始取值。 +项目的版本号格式为 ```大版本号.小版本号.补丁版本号.对应Spring Cloud的大版本号.对应Spring Cloud的小版本号-发布类型``` 的形式。 大版本号、小版本号、补丁版本号的类型为数字,从 0 开始取值。 对应Spring Cloud的大版本号为Spring Cloud提供的英文版本号,例如Hoxton、Greenwich等。对应Spring Cloud的小版本号为Spring Cloud给出的小版本号,例如 RS9 等。 发布类型目前包括正式发布和发布候选版(RC)。在实际的版本号中,正式发布版不额外添加发布类型,发布候选版将添加后缀,并从 RC0 开始。 diff --git a/README.md b/README.md index c3ed2e81..a4ecf07c 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Example List: - [Polaris Gateway Example](spring-cloud-tencent-examples/polaris-gateway-example/README.md) -For more features, please refer to [使用polaris-java](https://github.com/polarismesh/website/blob/main/docs/zh/doc/%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/%E4%BD%BF%E7%94%A8polaris-java.md). +For more features, please refer to [polaris-java](https://github.com/polarismesh/polaris-java). ### Version Standard diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistry.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistry.java index 8e09e042..16ce162a 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistry.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistry.java @@ -49,7 +49,8 @@ import static org.springframework.util.ReflectionUtils.rethrowRuntimeException; */ public class PolarisServiceRegistry implements ServiceRegistry { - private static final Logger log = LoggerFactory.getLogger(PolarisServiceRegistry.class); + private static final Logger log = LoggerFactory + .getLogger(PolarisServiceRegistry.class); private static final int ttl = 5; @@ -61,14 +62,15 @@ public class PolarisServiceRegistry implements ServiceRegistry { private final ScheduledExecutorService heartbeatExecutor; - public PolarisServiceRegistry(PolarisProperties polarisProperties, PolarisDiscoveryHandler polarisDiscoveryHandler, + public PolarisServiceRegistry(PolarisProperties polarisProperties, + PolarisDiscoveryHandler polarisDiscoveryHandler, MetadataLocalProperties metadataLocalProperties) { this.polarisProperties = polarisProperties; this.polarisDiscoveryHandler = polarisDiscoveryHandler; this.metadataLocalProperties = metadataLocalProperties; if (polarisProperties.isHeartbeatEnabled()) { - ScheduledThreadPoolExecutor heartbeatExecutor = new ScheduledThreadPoolExecutor(0, - new NamedThreadFactory("spring-cloud-heartbeat")); + ScheduledThreadPoolExecutor heartbeatExecutor = new ScheduledThreadPoolExecutor( + 0, new NamedThreadFactory("spring-cloud-heartbeat")); heartbeatExecutor.setMaximumPoolSize(1); this.heartbeatExecutor = heartbeatExecutor; } @@ -101,19 +103,20 @@ public class PolarisServiceRegistry implements ServiceRegistry { ProviderAPI providerClient = polarisDiscoveryHandler.getProviderAPI(); providerClient.register(instanceRegisterRequest); log.info("polaris registry, {} {} {}:{} {} register finished", - polarisProperties.getNamespace(), - registration.getServiceId(), registration.getHost(), - registration.getPort(), metadataLocalProperties.getContent()); + polarisProperties.getNamespace(), registration.getServiceId(), + registration.getHost(), registration.getPort(), + metadataLocalProperties.getContent()); if (null != heartbeatExecutor) { InstanceHeartbeatRequest heartbeatRequest = new InstanceHeartbeatRequest(); BeanUtils.copyProperties(instanceRegisterRequest, heartbeatRequest); - //注册成功后开始启动心跳线程 + // 注册成功后开始启动心跳线程 heartbeat(heartbeatRequest); } } catch (Exception e) { - log.error("polaris registry, {} register failed...{},", registration.getServiceId(), registration, e); + log.error("polaris registry, {} register failed...{},", + registration.getServiceId(), registration, e); rethrowRuntimeException(e); } } @@ -140,7 +143,8 @@ public class PolarisServiceRegistry implements ServiceRegistry { providerClient.deRegister(deRegisterRequest); } catch (Exception e) { - log.error("ERR_POLARIS_DEREGISTER, de-register failed...{},", registration, e); + log.error("ERR_POLARIS_DEREGISTER, de-register failed...{},", registration, + e); } finally { if (null != heartbeatExecutor) { @@ -163,7 +167,8 @@ public class PolarisServiceRegistry implements ServiceRegistry { @Override public Object getStatus(Registration registration) { String serviceName = registration.getServiceId(); - InstancesResponse instancesResponse = polarisDiscoveryHandler.getInstances(serviceName); + InstancesResponse instancesResponse = polarisDiscoveryHandler + .getInstances(serviceName); Instance[] instances = instancesResponse.getInstances(); if (null == instances || instances.length == 0) { return null; @@ -179,23 +184,26 @@ public class PolarisServiceRegistry implements ServiceRegistry { /** * Start the heartbeat thread. - * * @param heartbeatRequest heartbeat request */ public void heartbeat(InstanceHeartbeatRequest heartbeatRequest) { heartbeatExecutor.scheduleWithFixedDelay(() -> { try { String healthCheckEndpoint = polarisProperties.getHealthCheckUrl(); - //先判断是否配置了health-check-url,如果配置了,需要先进行服务实例健康检查,如果健康检查通过,则进行心跳上报,如果不通过,则不上报心跳 + // 先判断是否配置了health-check-url,如果配置了,需要先进行服务实例健康检查,如果健康检查通过,则进行心跳上报,如果不通过,则不上报心跳 if (Strings.isNotEmpty(healthCheckEndpoint)) { if (!healthCheckEndpoint.startsWith("/")) { healthCheckEndpoint = "/" + healthCheckEndpoint; } - String healthCheckUrl = String.format("http://%s:%s%s", heartbeatRequest.getHost(), heartbeatRequest.getPort(), healthCheckEndpoint); + String healthCheckUrl = String.format("http://%s:%s%s", + heartbeatRequest.getHost(), heartbeatRequest.getPort(), + healthCheckEndpoint); if (!OkHttpUtil.get(healthCheckUrl, null)) { - log.error("backend service health check failed. health check endpoint = {}", healthCheckEndpoint); + log.error( + "backend service health check failed. health check endpoint = {}", + healthCheckEndpoint); return; } } diff --git a/spring-cloud-tencent-metadata/src/test/java/com/tencent/cloud/metadata/core/intercepter/feign/Metadata2HeaderFeignInterceptorTest.java b/spring-cloud-tencent-metadata/src/test/java/com/tencent/cloud/metadata/core/intercepter/feign/Metadata2HeaderFeignInterceptorTest.java index 6fc94289..90288912 100644 --- a/spring-cloud-tencent-metadata/src/test/java/com/tencent/cloud/metadata/core/intercepter/feign/Metadata2HeaderFeignInterceptorTest.java +++ b/spring-cloud-tencent-metadata/src/test/java/com/tencent/cloud/metadata/core/intercepter/feign/Metadata2HeaderFeignInterceptorTest.java @@ -68,14 +68,22 @@ public class Metadata2HeaderFeignInterceptorTest { public void test1() throws JsonProcessingException { String metadata = testFeign.test(); ObjectMapper mapper = new ObjectMapper(); - Assertions.assertThat(mapper.readTree(metadata)) - .isEqualTo(mapper.readTree("{\"a\":\"11\",\"b\":\"22\",\"c\":\"33\"}{\"LOCAL_SERVICE\":\"test" + Assertions.assertThat(mapper.readTree(metadata)).isEqualTo(mapper.readTree( + "{\"a\":\"11\",\"b\":\"22\",\"c\":\"33\"}{\"LOCAL_SERVICE\":\"test" + "\",\"LOCAL_PATH\":\"/test\",\"LOCAL_NAMESPACE\":\"default\"}")); - Assertions.assertThat(metadataLocalProperties.getContent().get("a")).isEqualTo("1"); - Assertions.assertThat(metadataLocalProperties.getContent().get("b")).isEqualTo("2"); - Assertions.assertThat(MetadataContextHolder.get().getTransitiveCustomMetadata("a")).isEqualTo("11"); - Assertions.assertThat(MetadataContextHolder.get().getTransitiveCustomMetadata("b")).isEqualTo("22"); - Assertions.assertThat(MetadataContextHolder.get().getTransitiveCustomMetadata("c")).isEqualTo("33"); + Assertions.assertThat(metadataLocalProperties.getContent().get("a")) + .isEqualTo("1"); + Assertions.assertThat(metadataLocalProperties.getContent().get("b")) + .isEqualTo("2"); + Assertions + .assertThat(MetadataContextHolder.get().getTransitiveCustomMetadata("a")) + .isEqualTo("11"); + Assertions + .assertThat(MetadataContextHolder.get().getTransitiveCustomMetadata("b")) + .isEqualTo("22"); + Assertions + .assertThat(MetadataContextHolder.get().getTransitiveCustomMetadata("c")) + .isEqualTo("33"); } @SpringBootApplication @@ -84,18 +92,22 @@ public class Metadata2HeaderFeignInterceptorTest { protected static class TestApplication { @RequestMapping("/test") - public String test(@RequestHeader(MetadataConstant.HeaderName.CUSTOM_METADATA) String customMetadataStr) + public String test( + @RequestHeader(MetadataConstant.HeaderName.CUSTOM_METADATA) String customMetadataStr) throws UnsupportedEncodingException { - String systemMetadataStr = JacksonUtils.serialize2Json(MetadataContextHolder.get().getAllSystemMetadata()); + String systemMetadataStr = JacksonUtils + .serialize2Json(MetadataContextHolder.get().getAllSystemMetadata()); return URLDecoder.decode(customMetadataStr, "UTF-8") + systemMetadataStr; } @FeignClient(name = "test-feign", url = "http://localhost:8081") public interface TestFeign { - @RequestMapping(value = "/test", headers = {MetadataConstant.HeaderName.CUSTOM_METADATA + "={\"a\":\"11" - + "\",\"b\":\"22\",\"c\":\"33\"}"}) + @RequestMapping(value = "/test", + headers = { MetadataConstant.HeaderName.CUSTOM_METADATA + + "={\"a\":\"11" + "\",\"b\":\"22\",\"c\":\"33\"}" }) String test(); + } @Configuration @@ -106,7 +118,9 @@ public class Metadata2HeaderFeignInterceptorTest { template.header(MetadataConstant.HeaderName.CUSTOM_METADATA, "{\"a\":\"11\",\"b\":\"22\",\"c\":\"33\"}"); } + } } + } diff --git a/spring-cloud-tencent-metadata/src/test/java/com/tencent/cloud/metadata/core/intercepter/resttemplate/MetadataRestTemplateInterceptorTest.java b/spring-cloud-tencent-metadata/src/test/java/com/tencent/cloud/metadata/core/intercepter/resttemplate/MetadataRestTemplateInterceptorTest.java index e67ea998..7764aec7 100644 --- a/spring-cloud-tencent-metadata/src/test/java/com/tencent/cloud/metadata/core/intercepter/resttemplate/MetadataRestTemplateInterceptorTest.java +++ b/spring-cloud-tencent-metadata/src/test/java/com/tencent/cloud/metadata/core/intercepter/resttemplate/MetadataRestTemplateInterceptorTest.java @@ -112,4 +112,5 @@ public class MetadataRestTemplateInterceptorTest { } } + }