From 5c36e815e20b75b12b0b34200b21b60977e3ef8c Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Tue, 18 Jul 2023 17:25:18 +0800 Subject: [PATCH] fix:support old rate limit prometheus view. --- pom.xml | 2 +- .../pom.xml | 6 -- ...risCircuitBreakerFeignIntegrationTest.java | 100 +++++++++--------- ...sCircuitBreakerGatewayIntegrationTest.java | 29 +++-- .../PolarisCircuitBreakerIntegrationTest.java | 45 ++++---- .../PolarisCircuitBreakerMockServerTest.java | 16 +-- spring-cloud-tencent-dependencies/pom.xml | 4 +- .../src/main/resources/polaris.yml | 3 + 8 files changed, 101 insertions(+), 104 deletions(-) create mode 100644 spring-cloud-tencent-examples/polaris-ratelimit-example/ratelimit-callee-service/src/main/resources/polaris.yml diff --git a/pom.xml b/pom.xml index 0b7bbb73e..7bd97b9b8 100644 --- a/pom.xml +++ b/pom.xml @@ -88,7 +88,7 @@ - 1.11.7-2021.0.6 + 1.11.8-2021.0.6 5.3.25 diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/pom.xml b/spring-cloud-starter-tencent-polaris-circuitbreaker/pom.xml index 58a68a422..81b713d31 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/pom.xml +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/pom.xml @@ -102,12 +102,6 @@ test - - org.springframework.cloud - spring-cloud-starter-contract-stub-runner - test - - com.tencent.polaris polaris-test-common diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerFeignIntegrationTest.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerFeignIntegrationTest.java index 7d94022d9..582b766ff 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerFeignIntegrationTest.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerFeignIntegrationTest.java @@ -55,6 +55,8 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST; +import static com.tencent.polaris.test.common.Consts.SERVICE_CIRCUIT_BREAKER; import static com.tencent.polaris.test.common.TestUtils.SERVER_ADDRESS_ENV; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -69,28 +71,23 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen properties = { "spring.cloud.gateway.enabled=false", "feign.circuitbreaker.enabled=true", - "spring.cloud.polaris.namespace=default", - "spring.cloud.polaris.service=Test" -}) + "spring.cloud.polaris.namespace=" + NAMESPACE_TEST, + "spring.cloud.polaris.service=" + SERVICE_CIRCUIT_BREAKER + }) @DirtiesContext public class PolarisCircuitBreakerFeignIntegrationTest { private static final String TEST_SERVICE_NAME = "test-service-callee"; - + private static NamingServer namingServer; @Autowired private EchoService echoService; - @Autowired private FooService fooService; - @Autowired private BarService barService; - @Autowired private BazService bazService; - private static NamingServer namingServer; - @AfterAll public static void afterAll() { if (null != namingServer) { @@ -123,46 +120,6 @@ public class PolarisCircuitBreakerFeignIntegrationTest { assertThat(echoService.equals(fooService)).isEqualTo(Boolean.FALSE); } - @Configuration - @EnableAutoConfiguration - @ImportAutoConfiguration({ PolarisCircuitBreakerFeignClientAutoConfiguration.class }) - @EnableFeignClients - public static class TestConfig { - - @Bean - public EchoServiceFallback echoServiceFallback() { - return new EchoServiceFallback(); - } - - @Bean - public CustomFallbackFactory customFallbackFactory() { - return new CustomFallbackFactory(); - } - - @Bean - public CircuitBreakAPI circuitBreakAPI() throws InvalidProtocolBufferException { - try { - namingServer = NamingServer.startNamingServer(10081); - System.setProperty(SERVER_ADDRESS_ENV, String.format("127.0.0.1:%d", namingServer.getPort())); - } - catch (IOException e) { - - } - ServiceKey serviceKey = new ServiceKey("default", TEST_SERVICE_NAME); - - CircuitBreakerProto.CircuitBreakerRule.Builder circuitBreakerRuleBuilder = CircuitBreakerProto.CircuitBreakerRule.newBuilder(); - InputStream inputStream = PolarisCircuitBreakerMockServerTest.class.getClassLoader().getResourceAsStream("circuitBreakerRule.json"); - String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("")); - JsonFormat.parser().ignoringUnknownFields().merge(json, circuitBreakerRuleBuilder); - CircuitBreakerProto.CircuitBreakerRule circuitBreakerRule = circuitBreakerRuleBuilder.build(); - CircuitBreakerProto.CircuitBreaker circuitBreaker = CircuitBreakerProto.CircuitBreaker.newBuilder().addRules(circuitBreakerRule).build(); - namingServer.getNamingService().setCircuitBreaker(serviceKey, circuitBreaker); - com.tencent.polaris.api.config.Configuration configuration = TestUtils.configWithEnvAddress(); - return CircuitBreakAPIFactory.createCircuitBreakAPIByConfig(configuration); - } - - } - @FeignClient(value = TEST_SERVICE_NAME, contextId = "1", fallback = EchoServiceFallback.class) public interface EchoService { @@ -199,6 +156,49 @@ public class PolarisCircuitBreakerFeignIntegrationTest { } + @Configuration + @EnableAutoConfiguration + @ImportAutoConfiguration({PolarisCircuitBreakerFeignClientAutoConfiguration.class}) + @EnableFeignClients + public static class TestConfig { + + @Bean + public EchoServiceFallback echoServiceFallback() { + return new EchoServiceFallback(); + } + + @Bean + public CustomFallbackFactory customFallbackFactory() { + return new CustomFallbackFactory(); + } + + @Bean + public CircuitBreakAPI circuitBreakAPI() throws InvalidProtocolBufferException { + try { + namingServer = NamingServer.startNamingServer(10081); + System.setProperty(SERVER_ADDRESS_ENV, String.format("127.0.0.1:%d", namingServer.getPort())); + } + catch (IOException e) { + + } + ServiceKey serviceKey = new ServiceKey(NAMESPACE_TEST, TEST_SERVICE_NAME); + + CircuitBreakerProto.CircuitBreakerRule.Builder circuitBreakerRuleBuilder = CircuitBreakerProto.CircuitBreakerRule.newBuilder(); + InputStream inputStream = PolarisCircuitBreakerMockServerTest.class.getClassLoader() + .getResourceAsStream("circuitBreakerRule.json"); + String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines() + .collect(Collectors.joining("")); + JsonFormat.parser().ignoringUnknownFields().merge(json, circuitBreakerRuleBuilder); + CircuitBreakerProto.CircuitBreakerRule circuitBreakerRule = circuitBreakerRuleBuilder.build(); + CircuitBreakerProto.CircuitBreaker circuitBreaker = CircuitBreakerProto.CircuitBreaker.newBuilder() + .addRules(circuitBreakerRule).build(); + namingServer.getNamingService().setCircuitBreaker(serviceKey, circuitBreaker); + com.tencent.polaris.api.config.Configuration configuration = TestUtils.configWithEnvAddress(); + return CircuitBreakAPIFactory.createCircuitBreakAPIByConfig(configuration); + } + + } + public static class EchoServiceFallback implements EchoService { @Override @@ -223,7 +223,7 @@ public class PolarisCircuitBreakerFeignIntegrationTest { public static class CustomFallbackFactory implements FallbackFactory { - private FooService fooService = new FooServiceFallback(); + private final FooService fooService = new FooServiceFallback(); @Override public FooService create(Throwable throwable) { diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerGatewayIntegrationTest.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerGatewayIntegrationTest.java index 45c8d20fd..4219ffa67 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerGatewayIntegrationTest.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerGatewayIntegrationTest.java @@ -47,7 +47,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock; import org.springframework.cloud.gateway.filter.factory.SpringCloudCircuitBreakerFilterFactory; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; @@ -60,6 +59,8 @@ import org.springframework.test.web.reactive.server.WebTestClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST; +import static com.tencent.polaris.test.common.Consts.SERVICE_CIRCUIT_BREAKER; import static com.tencent.polaris.test.common.TestUtils.SERVER_ADDRESS_ENV; import static org.assertj.core.api.Assertions.assertThat; @@ -72,28 +73,23 @@ import static org.assertj.core.api.Assertions.assertThat; webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = { "spring.cloud.gateway.enabled=true", - "spring.cloud.polaris.namespace=default", - "spring.cloud.polaris.service=Test", - "spring.main.web-application-type=reactive", - "httpbin=http://localhost:${wiremock.server.port}" + "spring.cloud.polaris.namespace=" + NAMESPACE_TEST, + "spring.cloud.polaris.service=" + SERVICE_CIRCUIT_BREAKER, + "spring.main.web-application-type=reactive" }, classes = PolarisCircuitBreakerGatewayIntegrationTest.TestApplication.class ) -@AutoConfigureWireMock(port = 0) @ActiveProfiles("test-gateway") @AutoConfigureWebTestClient(timeout = "1000000") public class PolarisCircuitBreakerGatewayIntegrationTest { private static final String TEST_SERVICE_NAME = "test-service-callee"; - + private static NamingServer namingServer; @Autowired private WebTestClient webClient; - @Autowired private ApplicationContext applicationContext; - private static NamingServer namingServer; - @AfterAll public static void afterAll() { if (null != namingServer) { @@ -171,14 +167,17 @@ public class PolarisCircuitBreakerGatewayIntegrationTest { catch (IOException e) { } - ServiceKey serviceKey = new ServiceKey("default", TEST_SERVICE_NAME); + ServiceKey serviceKey = new ServiceKey(NAMESPACE_TEST, TEST_SERVICE_NAME); - CircuitBreakerProto.CircuitBreakerRule.Builder circuitBreakerRuleBuilder = CircuitBreakerProto.CircuitBreakerRule.newBuilder(); - InputStream inputStream = PolarisCircuitBreakerMockServerTest.class.getClassLoader().getResourceAsStream("circuitBreakerRule.json"); - String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("")); + CircuitBreakerProto.CircuitBreakerRule.Builder circuitBreakerRuleBuilder = CircuitBreakerProto.CircuitBreakerRule.newBuilder(); + InputStream inputStream = PolarisCircuitBreakerMockServerTest.class.getClassLoader() + .getResourceAsStream("circuitBreakerRule.json"); + String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines() + .collect(Collectors.joining("")); JsonFormat.parser().ignoringUnknownFields().merge(json, circuitBreakerRuleBuilder); CircuitBreakerProto.CircuitBreakerRule circuitBreakerRule = circuitBreakerRuleBuilder.build(); - CircuitBreakerProto.CircuitBreaker circuitBreaker = CircuitBreakerProto.CircuitBreaker.newBuilder().addRules(circuitBreakerRule).build(); + CircuitBreakerProto.CircuitBreaker circuitBreaker = CircuitBreakerProto.CircuitBreaker.newBuilder() + .addRules(circuitBreakerRule).build(); namingServer.getNamingService().setCircuitBreaker(serviceKey, circuitBreaker); com.tencent.polaris.api.config.Configuration configuration = TestUtils.configWithEnvAddress(); return CircuitBreakAPIFactory.createCircuitBreakAPIByConfig(configuration); diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerIntegrationTest.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerIntegrationTest.java index 78cb930a2..49799c365 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerIntegrationTest.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerIntegrationTest.java @@ -67,6 +67,8 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.DefaultUriBuilderFactory; +import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST; +import static com.tencent.polaris.test.common.Consts.SERVICE_CIRCUIT_BREAKER; import static com.tencent.polaris.test.common.TestUtils.SERVER_ADDRESS_ENV; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -84,8 +86,8 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat properties = { "spring.cloud.gateway.enabled=false", "feign.circuitbreaker.enabled=true", - "spring.cloud.polaris.namespace=default", - "spring.cloud.polaris.service=test" + "spring.cloud.polaris.namespace=" + NAMESPACE_TEST, + "spring.cloud.polaris.service=" + SERVICE_CIRCUIT_BREAKER }) @DirtiesContext public class PolarisCircuitBreakerIntegrationTest { @@ -93,41 +95,33 @@ public class PolarisCircuitBreakerIntegrationTest { private static final String TEST_SERVICE_NAME = "test-service-callee"; private static NamingServer namingServer; - - @AfterAll - public static void afterAll() { - if (null != namingServer) { - namingServer.terminate(); - } - } - @Autowired @Qualifier("defaultRestTemplate") private RestTemplate defaultRestTemplate; - @Autowired @Qualifier("restTemplateFallbackFromPolaris") private RestTemplate restTemplateFallbackFromPolaris; - @Autowired @Qualifier("restTemplateFallbackFromCode") private RestTemplate restTemplateFallbackFromCode; - @Autowired @Qualifier("restTemplateFallbackFromCode2") private RestTemplate restTemplateFallbackFromCode2; - @Autowired @Qualifier("restTemplateFallbackFromCode3") private RestTemplate restTemplateFallbackFromCode3; - @Autowired @Qualifier("restTemplateFallbackFromCode4") private RestTemplate restTemplateFallbackFromCode4; - @Autowired private ApplicationContext applicationContext; + @AfterAll + public static void afterAll() { + if (null != namingServer) { + namingServer.terminate(); + } + } @Test public void testRestTemplate() throws URISyntaxException { @@ -154,7 +148,8 @@ public class PolarisCircuitBreakerIntegrationTest { Utils.sleepUninterrupted(2000); assertThat(restTemplateFallbackFromCode2.getForObject("/example/service/b/info", String.class)).isEqualTo("\"this is a fallback class\""); Utils.sleepUninterrupted(2000); - assertThat(restTemplateFallbackFromCode3.getForEntity("/example/service/b/info", String.class).getStatusCode()).isEqualTo(HttpStatus.OK); + assertThat(restTemplateFallbackFromCode3.getForEntity("/example/service/b/info", String.class) + .getStatusCode()).isEqualTo(HttpStatus.OK); Utils.sleepUninterrupted(2000); assertThat(restTemplateFallbackFromCode4.getForObject("/example/service/b/info", String.class)).isEqualTo("fallback"); Utils.sleepUninterrupted(2000); @@ -167,7 +162,7 @@ public class PolarisCircuitBreakerIntegrationTest { @Configuration @EnableAutoConfiguration - @ImportAutoConfiguration({ PolarisCircuitBreakerFeignClientAutoConfiguration.class }) + @ImportAutoConfiguration({PolarisCircuitBreakerFeignClientAutoConfiguration.class}) @EnableFeignClients public static class TestConfig { @@ -251,14 +246,17 @@ public class PolarisCircuitBreakerIntegrationTest { catch (IOException e) { } - ServiceKey serviceKey = new ServiceKey("default", TEST_SERVICE_NAME); + ServiceKey serviceKey = new ServiceKey(NAMESPACE_TEST, TEST_SERVICE_NAME); - CircuitBreakerProto.CircuitBreakerRule.Builder circuitBreakerRuleBuilder = CircuitBreakerProto.CircuitBreakerRule.newBuilder(); - InputStream inputStream = PolarisCircuitBreakerMockServerTest.class.getClassLoader().getResourceAsStream("circuitBreakerRule.json"); - String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("")); + CircuitBreakerProto.CircuitBreakerRule.Builder circuitBreakerRuleBuilder = CircuitBreakerProto.CircuitBreakerRule.newBuilder(); + InputStream inputStream = PolarisCircuitBreakerMockServerTest.class.getClassLoader() + .getResourceAsStream("circuitBreakerRule.json"); + String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines() + .collect(Collectors.joining("")); JsonFormat.parser().ignoringUnknownFields().merge(json, circuitBreakerRuleBuilder); CircuitBreakerProto.CircuitBreakerRule circuitBreakerRule = circuitBreakerRuleBuilder.build(); - CircuitBreakerProto.CircuitBreaker circuitBreaker = CircuitBreakerProto.CircuitBreaker.newBuilder().addRules(circuitBreakerRule).build(); + CircuitBreakerProto.CircuitBreaker circuitBreaker = CircuitBreakerProto.CircuitBreaker.newBuilder() + .addRules(circuitBreakerRule).build(); namingServer.getNamingService().setCircuitBreaker(serviceKey, circuitBreaker); com.tencent.polaris.api.config.Configuration configuration = TestUtils.configWithEnvAddress(); return CircuitBreakAPIFactory.createCircuitBreakAPIByConfig(configuration); @@ -313,5 +311,4 @@ public class PolarisCircuitBreakerIntegrationTest { } } - } diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerMockServerTest.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerMockServerTest.java index 89ab8154e..d8f7f3462 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerMockServerTest.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisCircuitBreakerMockServerTest.java @@ -86,12 +86,15 @@ public class PolarisCircuitBreakerMockServerTest { } ServiceKey serviceKey = new ServiceKey(NAMESPACE_TEST, SERVICE_CIRCUIT_BREAKER); - CircuitBreakerProto.CircuitBreakerRule.Builder circuitBreakerRuleBuilder = CircuitBreakerProto.CircuitBreakerRule.newBuilder(); - InputStream inputStream = PolarisCircuitBreakerMockServerTest.class.getClassLoader().getResourceAsStream("circuitBreakerRule.json"); - String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("")); + CircuitBreakerProto.CircuitBreakerRule.Builder circuitBreakerRuleBuilder = CircuitBreakerProto.CircuitBreakerRule.newBuilder(); + InputStream inputStream = PolarisCircuitBreakerMockServerTest.class.getClassLoader() + .getResourceAsStream("circuitBreakerRule.json"); + String json = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines() + .collect(Collectors.joining("")); JsonFormat.parser().ignoringUnknownFields().merge(json, circuitBreakerRuleBuilder); CircuitBreakerProto.CircuitBreakerRule circuitBreakerRule = circuitBreakerRuleBuilder.build(); - CircuitBreakerProto.CircuitBreaker circuitBreaker = CircuitBreakerProto.CircuitBreaker.newBuilder().addRules(circuitBreakerRule).build(); + CircuitBreakerProto.CircuitBreaker circuitBreaker = CircuitBreakerProto.CircuitBreaker.newBuilder() + .addRules(circuitBreakerRule).build(); namingServer.getNamingService().setCircuitBreaker(serviceKey, circuitBreaker); } @@ -100,6 +103,7 @@ public class PolarisCircuitBreakerMockServerTest { if (null != namingServer) { namingServer.terminate(); } + mockedApplicationContextAwareUtils.close(); } @Test @@ -138,7 +142,8 @@ public class PolarisCircuitBreakerMockServerTest { assertThat(Mono.error(new RuntimeException("boom")).transform(it -> rcb.run(it, t -> Mono.just("fallback"))) .block()).isEqualTo("fallback"); - assertThat(Flux.just("foobar", "hello world").transform(it -> rcb.run(it, t -> Flux.just("fallback", "fallback"))) + assertThat(Flux.just("foobar", "hello world") + .transform(it -> rcb.run(it, t -> Flux.just("fallback", "fallback"))) .collectList().block()) .isEqualTo(Arrays.asList("fallback", "fallback")); @@ -146,7 +151,6 @@ public class PolarisCircuitBreakerMockServerTest { .collectList().block()) .isEqualTo(Collections.singletonList("fallback")); - } } diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml index e3e21d6a5..458a1ab9f 100644 --- a/spring-cloud-tencent-dependencies/pom.xml +++ b/spring-cloud-tencent-dependencies/pom.xml @@ -70,10 +70,10 @@ - 1.11.7-2021.0.6 + 1.11.8-2021.0.6 - 1.12.9 + 1.12.11 31.0.1-jre 1.2.11 4.5.1 diff --git a/spring-cloud-tencent-examples/polaris-ratelimit-example/ratelimit-callee-service/src/main/resources/polaris.yml b/spring-cloud-tencent-examples/polaris-ratelimit-example/ratelimit-callee-service/src/main/resources/polaris.yml new file mode 100644 index 000000000..489ff609f --- /dev/null +++ b/spring-cloud-tencent-examples/polaris-ratelimit-example/ratelimit-callee-service/src/main/resources/polaris.yml @@ -0,0 +1,3 @@ +provider: + rateLimit: + reportMetrics: true