Fixes lack of load balanced URL extraction for Zipkin and Reactor

fixes gh-2339
This commit is contained in:
Marcin Grzejszczak
2024-02-09 13:55:35 +01:00
parent c5b82d48dd
commit f8d88bb721
2 changed files with 12 additions and 3 deletions

View File

@@ -16,6 +16,8 @@
package org.springframework.cloud.sleuth.autoconfig.zipkin2;
import java.net.URI;
import zipkin2.reporter.Sender;
import org.springframework.beans.factory.annotation.Autowired;
@@ -82,9 +84,11 @@ class ZipkinHttpSenderConfiguration {
static class ZipkinReactiveConfiguration {
@Bean(ZipkinAutoConfiguration.SENDER_BEAN_NAME)
Sender webClientSender(ZipkinProperties zipkin, ZipkinWebClientBuilderProvider zipkinWebClientBuilderProvider) {
Sender webClientSender(ZipkinProperties zipkin, ZipkinWebClientBuilderProvider zipkinWebClientBuilderProvider,
ZipkinUrlExtractor zipkinUrlExtractor) {
WebClient.Builder webClientBuilder = zipkinWebClientBuilderProvider.zipkinWebClientBuilder();
return new WebClientSender(webClientBuilder.build(), zipkin.getBaseUrl(), zipkin.getApiPath(),
URI uri = zipkinUrlExtractor.zipkinUrl(zipkin);
return new WebClientSender(webClientBuilder.build(), uri.toString(), zipkin.getApiPath(),
zipkin.getEncoder(), zipkin.getCheckTimeout());
}
@@ -94,6 +98,11 @@ class ZipkinHttpSenderConfiguration {
return WebClient::builder;
}
@Bean
ZipkinUrlExtractor defaultZipkinUrlExtractor(final ZipkinLoadBalancer zipkinLoadBalancer) {
return new CachingZipkinUrlExtractor(zipkinLoadBalancer);
}
}
@Configuration(proxyBeanMethods = false)

View File

@@ -49,7 +49,7 @@ class ZipkinHttpSenderConfigurationReactiveTests {
springApplication.setWebApplicationType(WebApplicationType.REACTIVE);
try (ConfigurableApplicationContext context = springApplication.run("--spring.sleuth.noop.enabled=true",
"--server.port=0")) {
"--server.port=0", "--spring.zipkin.base-url=http://cloudUrl")) {
then(context.getBean(Sender.class)).isInstanceOf(WebClientSender.class);
}
}