Skip to content

Commit 4f47bce

Browse files
Fixed Zipkin with WebFlux to use filter function; related to gh-2339
1 parent 71a141a commit 4f47bce

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/zipkin2/ZipkinHttpSenderConfiguration.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.springframework.cloud.sleuth.autoconfig.zipkin2;
1818

19-
import java.net.URI;
20-
2119
import zipkin2.reporter.Sender;
2220

2321
import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +28,7 @@
3028
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
3129
import org.springframework.boot.context.properties.EnableConfigurationProperties;
3230
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
31+
import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancedExchangeFilterFunction;
3332
import org.springframework.cloud.sleuth.zipkin2.CachingZipkinUrlExtractor;
3433
import org.springframework.cloud.sleuth.zipkin2.LoadBalancerClientZipkinLoadBalancer;
3534
import org.springframework.cloud.sleuth.zipkin2.RestTemplateSender;
@@ -45,6 +44,7 @@
4544
import org.springframework.context.annotation.Bean;
4645
import org.springframework.context.annotation.Conditional;
4746
import org.springframework.context.annotation.Configuration;
47+
import org.springframework.lang.Nullable;
4848
import org.springframework.web.client.RestTemplate;
4949
import org.springframework.web.reactive.function.client.WebClient;
5050

@@ -84,17 +84,19 @@ ZipkinUrlExtractor defaultZipkinUrlExtractor(final ZipkinLoadBalancer zipkinLoad
8484
static class ZipkinReactiveConfiguration {
8585

8686
@Bean(ZipkinAutoConfiguration.SENDER_BEAN_NAME)
87-
Sender webClientSender(ZipkinProperties zipkin, ZipkinWebClientBuilderProvider zipkinWebClientBuilderProvider,
88-
ZipkinUrlExtractor zipkinUrlExtractor) {
87+
Sender webClientSender(ZipkinProperties zipkin, ZipkinWebClientBuilderProvider zipkinWebClientBuilderProvider) {
8988
WebClient.Builder webClientBuilder = zipkinWebClientBuilderProvider.zipkinWebClientBuilder();
90-
URI uri = zipkinUrlExtractor.zipkinUrl(zipkin);
91-
return new WebClientSender(webClientBuilder.build(), uri.toString(), zipkin.getApiPath(),
89+
return new WebClientSender(webClientBuilder.build(), zipkin.getBaseUrl(), zipkin.getApiPath(),
9290
zipkin.getEncoder(), zipkin.getCheckTimeout());
9391
}
9492

9593
@Bean
9694
@ConditionalOnMissingBean
97-
ZipkinWebClientBuilderProvider defaultZipkinWebClientProvider() {
95+
ZipkinWebClientBuilderProvider defaultZipkinWebClientProvider(
96+
final @Nullable LoadBalancedExchangeFilterFunction filterFunction) {
97+
if (filterFunction != null) {
98+
return () -> WebClient.builder().filter(filterFunction);
99+
}
98100
return WebClient::builder;
99101
}
100102

spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/zipkin2/ZipkinHttpSenderConfigurationReactiveTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ void should_work_when_using_web_client_without_the_web_environment() {
4949
springApplication.setWebApplicationType(WebApplicationType.REACTIVE);
5050

5151
try (ConfigurableApplicationContext context = springApplication.run("--spring.sleuth.noop.enabled=true",
52-
"--server.port=0", "--spring.zipkin.base-url=http://cloudUrl")) {
52+
"--server.port=0", "--spring.zipkin.base-url=http://cloudUrl",
53+
"--spring.cloud.discovery.client.simple.instances.cloudUrl[0].uri=http://localhost:9411")) {
5354
then(context.getBean(Sender.class)).isInstanceOf(WebClientSender.class);
5455
}
5556
}

0 commit comments

Comments
 (0)