diff --git a/spring-cloud-sleuth-stream/pom.xml b/spring-cloud-sleuth-stream/pom.xml index 3b9179c5c..d8e322442 100644 --- a/spring-cloud-sleuth-stream/pom.xml +++ b/spring-cloud-sleuth-stream/pom.xml @@ -28,6 +28,11 @@ org.springframework.cloud spring-cloud-commons + + org.springframework.cloud + spring-cloud-context + true + org.springframework.boot spring-boot-starter-aop diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java index 82bef4969..7d04f2adc 100644 --- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java +++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthStreamAutoConfiguration.java @@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration; import org.springframework.boot.autoconfigure.web.ServerProperties; @@ -31,6 +32,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.serviceregistry.Registration; import org.springframework.cloud.commons.util.InetUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.cloud.sleuth.Sampler; import org.springframework.cloud.sleuth.SpanAdjuster; import org.springframework.cloud.sleuth.autoconfig.TraceAutoConfiguration; @@ -71,10 +73,25 @@ public class SleuthStreamAutoConfiguration { @Autowired(required = false) List spanAdjusters = new ArrayList<>(); - @Bean - @ConditionalOnMissingBean - public Sampler defaultTraceSampler(SamplerProperties config) { - return new PercentageBasedSampler(config); + @Configuration + @ConditionalOnClass(RefreshScope.class) + protected static class RefreshScopedPercentageBasedSamplerConfiguration { + @Bean + @RefreshScope + @ConditionalOnMissingBean + public Sampler defaultTraceSampler(SamplerProperties config) { + return new PercentageBasedSampler(config); + } + } + + @Configuration + @ConditionalOnMissingClass("org.springframework.cloud.context.config.annotation.RefreshScope") + protected static class NonRefreshScopePercentageBasedSamplerConfiguration { + @Bean + @ConditionalOnMissingBean + public Sampler defaultTraceSampler(SamplerProperties config) { + return new PercentageBasedSampler(config); + } } @Bean diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml index a88614bee..dd5e7561c 100644 --- a/spring-cloud-sleuth-zipkin/pom.xml +++ b/spring-cloud-sleuth-zipkin/pom.xml @@ -45,6 +45,11 @@ org.springframework.cloud spring-cloud-commons + + org.springframework.cloud + spring-cloud-context + true + org.springframework.boot spring-boot-actuator diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java index 5b3b8a314..272d58b29 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinAutoConfiguration.java @@ -35,6 +35,7 @@ import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.serviceregistry.Registration; import org.springframework.cloud.commons.util.InetUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.cloud.sleuth.Sampler; import org.springframework.cloud.sleuth.SpanAdjuster; import org.springframework.cloud.sleuth.SpanReporter; @@ -136,10 +137,25 @@ public class ZipkinAutoConfiguration { return new DefaultZipkinRestTemplateCustomizer(zipkinProperties); } - @Bean - @ConditionalOnMissingBean - public Sampler defaultTraceSampler(SamplerProperties config) { - return new PercentageBasedSampler(config); + @Configuration + @ConditionalOnClass(RefreshScope.class) + protected static class RefreshScopedPercentageBasedSamplerConfiguration { + @Bean + @RefreshScope + @ConditionalOnMissingBean + public Sampler defaultTraceSampler(SamplerProperties config) { + return new PercentageBasedSampler(config); + } + } + + @Configuration + @ConditionalOnMissingClass("org.springframework.cloud.context.config.annotation.RefreshScope") + protected static class NonRefreshScopePercentageBasedSamplerConfiguration { + @Bean + @ConditionalOnMissingBean + public Sampler defaultTraceSampler(SamplerProperties config) { + return new PercentageBasedSampler(config); + } } @Bean diff --git a/spring-cloud-sleuth-zipkin2/pom.xml b/spring-cloud-sleuth-zipkin2/pom.xml index 9f8ea167b..7266dc776 100644 --- a/spring-cloud-sleuth-zipkin2/pom.xml +++ b/spring-cloud-sleuth-zipkin2/pom.xml @@ -45,6 +45,11 @@ org.springframework.cloud spring-cloud-commons + + org.springframework.cloud + spring-cloud-context + true + org.springframework.boot spring-boot-actuator diff --git a/spring-cloud-sleuth-zipkin2/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java b/spring-cloud-sleuth-zipkin2/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java index 45eb9ddc9..2c64bb7f4 100644 --- a/spring-cloud-sleuth-zipkin2/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java +++ b/spring-cloud-sleuth-zipkin2/src/main/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfiguration.java @@ -19,15 +19,18 @@ package org.springframework.cloud.sleuth.zipkin2; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.client.serviceregistry.Registration; import org.springframework.cloud.commons.util.InetUtils; +import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.cloud.sleuth.Sampler; import org.springframework.cloud.sleuth.SpanAdjuster; import org.springframework.cloud.sleuth.SpanReporter; @@ -95,10 +98,25 @@ public class ZipkinAutoConfiguration { return new DefaultZipkinRestTemplateCustomizer(zipkinProperties); } - @Bean - @ConditionalOnMissingBean - public Sampler defaultTraceSampler(SamplerProperties config) { - return new PercentageBasedSampler(config); + @Configuration + @ConditionalOnClass(RefreshScope.class) + protected static class RefreshScopedPercentageBasedSamplerConfiguration { + @Bean + @RefreshScope + @ConditionalOnMissingBean + public Sampler defaultTraceSampler(SamplerProperties config) { + return new PercentageBasedSampler(config); + } + } + + @Configuration + @ConditionalOnMissingClass("org.springframework.cloud.context.config.annotation.RefreshScope") + protected static class NonRefreshScopePercentageBasedSamplerConfiguration { + @Bean + @ConditionalOnMissingBean + public Sampler defaultTraceSampler(SamplerProperties config) { + return new PercentageBasedSampler(config); + } } @Bean