Skip to content

Commit

Permalink
Fixed Zipkin with WebFlux to use filter function; related to gh-2339
Browse files Browse the repository at this point in the history
  • Loading branch information
marcingrzejszczak committed Feb 9, 2024
1 parent 71a141a commit 4f47bce
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@

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

import java.net.URI;

import zipkin2.reporter.Sender;

import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -30,6 +28,7 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancedExchangeFilterFunction;
import org.springframework.cloud.sleuth.zipkin2.CachingZipkinUrlExtractor;
import org.springframework.cloud.sleuth.zipkin2.LoadBalancerClientZipkinLoadBalancer;
import org.springframework.cloud.sleuth.zipkin2.RestTemplateSender;
Expand All @@ -45,6 +44,7 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.lang.Nullable;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.reactive.function.client.WebClient;

Expand Down Expand Up @@ -84,17 +84,19 @@ ZipkinUrlExtractor defaultZipkinUrlExtractor(final ZipkinLoadBalancer zipkinLoad
static class ZipkinReactiveConfiguration {

@Bean(ZipkinAutoConfiguration.SENDER_BEAN_NAME)
Sender webClientSender(ZipkinProperties zipkin, ZipkinWebClientBuilderProvider zipkinWebClientBuilderProvider,
ZipkinUrlExtractor zipkinUrlExtractor) {
Sender webClientSender(ZipkinProperties zipkin, ZipkinWebClientBuilderProvider zipkinWebClientBuilderProvider) {
WebClient.Builder webClientBuilder = zipkinWebClientBuilderProvider.zipkinWebClientBuilder();
URI uri = zipkinUrlExtractor.zipkinUrl(zipkin);
return new WebClientSender(webClientBuilder.build(), uri.toString(), zipkin.getApiPath(),
return new WebClientSender(webClientBuilder.build(), zipkin.getBaseUrl(), zipkin.getApiPath(),
zipkin.getEncoder(), zipkin.getCheckTimeout());
}

@Bean
@ConditionalOnMissingBean
ZipkinWebClientBuilderProvider defaultZipkinWebClientProvider() {
ZipkinWebClientBuilderProvider defaultZipkinWebClientProvider(
final @Nullable LoadBalancedExchangeFilterFunction filterFunction) {
if (filterFunction != null) {
return () -> WebClient.builder().filter(filterFunction);
}
return WebClient::builder;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ void should_work_when_using_web_client_without_the_web_environment() {
springApplication.setWebApplicationType(WebApplicationType.REACTIVE);

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

0 comments on commit 4f47bce

Please sign in to comment.