From 4da5fed62880ea1789d8956704d3694b1b2afaa5 Mon Sep 17 00:00:00 2001 From: weihu Date: Fri, 24 Jun 2022 10:33:48 +0800 Subject: [PATCH] Support circuitbreaker in RestTemplate --- .../config/PolarisFeignClientAutoConfiguration.java | 3 +-- .../resttemplate/PolarisRestTemplateModifier.java | 3 --- .../resttemplate/PolarisRestTemplateResponseErrorHandler.java | 4 ++-- .../polaris/circuitbreaker/example/ServiceAController.java | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisFeignClientAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisFeignClientAutoConfiguration.java index 178a12ef1..bcaaf3ea9 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisFeignClientAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisFeignClientAutoConfiguration.java @@ -39,8 +39,7 @@ import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE; * * @author Haotian Zhang */ -@ConditionalOnProperty(value = "spring.cloud.polaris.circuitbreaker.enabled", havingValue = "true", - matchIfMissing = true) +@ConditionalOnProperty(value = "spring.cloud.polaris.circuitbreaker.enabled", havingValue = "true", matchIfMissing = true) @Configuration(proxyBeanMethods = false) @AutoConfigureAfter(PolarisContextAutoConfiguration.class) @AutoConfigureBefore(FeignAutoConfiguration.class) diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/resttemplate/PolarisRestTemplateModifier.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/resttemplate/PolarisRestTemplateModifier.java index 82c12843a..bd43913f4 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/resttemplate/PolarisRestTemplateModifier.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/resttemplate/PolarisRestTemplateModifier.java @@ -49,7 +49,6 @@ public class PolarisRestTemplateModifier implements ApplicationContextAware, Sma if (!ObjectUtils.isEmpty(beans)) { beans.forEach(this::initRestTemplate); } - } private void initRestTemplate(String beanName, Object bean) { @@ -57,12 +56,10 @@ public class PolarisRestTemplateModifier implements ApplicationContextAware, Sma RestTemplate restTemplate = (RestTemplate) bean; restTemplate.setErrorHandler(polarisRestTemplateResponseErrorHandler); } - } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; - } } diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/resttemplate/PolarisRestTemplateResponseErrorHandler.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/resttemplate/PolarisRestTemplateResponseErrorHandler.java index ad2cc35e9..df66298e1 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/resttemplate/PolarisRestTemplateResponseErrorHandler.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/resttemplate/PolarisRestTemplateResponseErrorHandler.java @@ -72,14 +72,14 @@ public class PolarisRestTemplateResponseErrorHandler implements ResponseErrorHan } } - public void handleError(URI url, HttpMethod method, ClientHttpResponse response) { + public void handleError(URI url, HttpMethod method, ClientHttpResponse response) throws IOException { ServiceCallResult resultRequest = null; try { resultRequest = builderServiceCallResult(url, response); } catch (IOException e) { LOG.error("Will report response of {} url {}", response, url, e); - throw new RuntimeException(e); + throw e; } finally { consumerAPI.updateServiceCallResult(resultRequest); diff --git a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/java/com/tencent/cloud/polaris/circuitbreaker/example/ServiceAController.java b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/java/com/tencent/cloud/polaris/circuitbreaker/example/ServiceAController.java index 52e30c7d4..3ba9901a6 100644 --- a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/java/com/tencent/cloud/polaris/circuitbreaker/example/ServiceAController.java +++ b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/java/com/tencent/cloud/polaris/circuitbreaker/example/ServiceAController.java @@ -50,7 +50,7 @@ public class ServiceAController { @GetMapping("/getBServiceInfoByRestTemplate") public String getBServiceInfoByRestTemplate() { - return restTemplate.getForObject("http://polaris-circuitbreaker-example-b//example/service/b/info", String.class); + return restTemplate.getForObject("http://polaris-circuitbreaker-example-b/example/service/b/info", String.class); } /**