diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/condition/ConditionalOnPushGatewayEnabled.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/condition/ConditionalOnPushGatewayEnabled.java new file mode 100644 index 000000000..e8e8406f9 --- /dev/null +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/condition/ConditionalOnPushGatewayEnabled.java @@ -0,0 +1,35 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + */ + +package com.tencent.cloud.rpc.enhancement.condition; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.springframework.context.annotation.Conditional; + +/** + * @author lingxiao.wlx + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD}) +@Conditional(PushGatewayCondition.class) +public @interface ConditionalOnPushGatewayEnabled { +} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/condition/PushGatewayCondition.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/condition/PushGatewayCondition.java new file mode 100644 index 000000000..a22775d34 --- /dev/null +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/condition/PushGatewayCondition.java @@ -0,0 +1,46 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + */ + +package com.tencent.cloud.rpc.enhancement.condition; + +import org.springframework.boot.autoconfigure.condition.ConditionOutcome; +import org.springframework.boot.autoconfigure.condition.SpringBootCondition; +import org.springframework.context.annotation.ConditionContext; +import org.springframework.core.env.Environment; +import org.springframework.core.type.AnnotatedTypeMetadata; + +/** + * @author lingxiao.wlx + */ +public class PushGatewayCondition extends SpringBootCondition { + + private static final String POLARIS_STAT_PUSH_GATEWAY_ENABLED = "spring.cloud.polaris.stat.pushgateway.enabled"; + + private static final String POLARIS_STAT_ENABLED = "spring.cloud.polaris.stat.enabled"; + + @Override + public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) { + Environment environment = context.getEnvironment(); + Boolean statEnabled = environment.getProperty(POLARIS_STAT_ENABLED, Boolean.class, false); + Boolean statPushGatewayEnabled = environment.getProperty(POLARIS_STAT_PUSH_GATEWAY_ENABLED, Boolean.class, false); + if (statEnabled && statPushGatewayEnabled) { + return ConditionOutcome.match("matched"); + } + return ConditionOutcome.noMatch("matched"); + } +} diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatPropertiesAutoConfiguration.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatPropertiesAutoConfiguration.java index 652429fad..beca27d40 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatPropertiesAutoConfiguration.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/stat/config/PolarisStatPropertiesAutoConfiguration.java @@ -21,11 +21,11 @@ import java.time.Duration; import java.util.Map; import com.tencent.cloud.polaris.context.ConditionalOnPolarisEnabled; +import com.tencent.cloud.rpc.enhancement.condition.ConditionalOnPushGatewayEnabled; import com.tencent.cloud.rpc.enhancement.stat.config.plugin.PrometheusPushGatewayContainer; import org.apache.commons.lang.StringUtils; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -48,7 +48,7 @@ public class PolarisStatPropertiesAutoConfiguration { } @Configuration(proxyBeanMethods = false) - @ConditionalOnProperty(name = "spring.cloud.polaris.stat.pushgateway.enabled", havingValue = "true") + @ConditionalOnPushGatewayEnabled public static class PolarisStatPrometheusPushGatewayAutoConfiguration { private static final String DEFAULT_JOB_NAME = "spring-cloud-tencent-application"; diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/stat/plugin/PrometheusPushGatewayContainerTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/stat/plugin/PrometheusPushGatewayContainerTest.java index cce877df5..0f176f3d7 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/stat/plugin/PrometheusPushGatewayContainerTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/stat/plugin/PrometheusPushGatewayContainerTest.java @@ -42,6 +42,7 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen @SpringBootTest(webEnvironment = RANDOM_PORT, classes = PrometheusPushGatewayContainerTest.TestApplication.class, properties = {"spring.cloud.polaris.stat.pushgateway.enabled=true", + "spring.cloud.polaris.stat.enabled=true", "spring.cloud.polaris.stat.pushgateway.shut-down-strategy=DELETE", "spring.cloud.polaris.stat.pushgateway.push-rate=1m", "spring.cloud.polaris.stat.pushgateway.job=test",