Polish "Migrate to Brave 6 and Zipkin Reporter 3"
See gh-39049
This commit is contained in:
parent
4b0bed23b0
commit
7555f6c71e
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2023 the original author or authors.
|
* Copyright 2012-2024 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,8 +16,10 @@
|
||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.tracing.zipkin;
|
package org.springframework.boot.actuate.autoconfigure.tracing.zipkin;
|
||||||
|
|
||||||
import zipkin2.reporter.BytesMessageSender;
|
import zipkin2.Span;
|
||||||
|
import zipkin2.reporter.BytesEncoder;
|
||||||
import zipkin2.reporter.Encoding;
|
import zipkin2.reporter.Encoding;
|
||||||
|
import zipkin2.reporter.SpanBytesEncoder;
|
||||||
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration;
|
||||||
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration;
|
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration;
|
||||||
|
|
@ -41,7 +43,7 @@ import org.springframework.context.annotation.Import;
|
||||||
* @since 3.0.0
|
* @since 3.0.0
|
||||||
*/
|
*/
|
||||||
@AutoConfiguration(after = RestTemplateAutoConfiguration.class)
|
@AutoConfiguration(after = RestTemplateAutoConfiguration.class)
|
||||||
@ConditionalOnClass(BytesMessageSender.class)
|
@ConditionalOnClass(Encoding.class)
|
||||||
@Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class })
|
@Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class })
|
||||||
@EnableConfigurationProperties(ZipkinProperties.class)
|
@EnableConfigurationProperties(ZipkinProperties.class)
|
||||||
public class ZipkinAutoConfiguration {
|
public class ZipkinAutoConfiguration {
|
||||||
|
|
@ -54,8 +56,17 @@ public class ZipkinAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
public Encoding encoding(ZipkinProperties properties) {
|
Encoding encoding(ZipkinProperties properties) {
|
||||||
return properties.getEncoding();
|
return switch (properties.getEncoding()) {
|
||||||
|
case JSON -> Encoding.JSON;
|
||||||
|
case PROTO3 -> Encoding.PROTO3;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
|
||||||
|
BytesEncoder<Span> zipkinSpanEncoder(Encoding encoding) {
|
||||||
|
return SpanBytesEncoder.forEncoding(encoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,6 @@ import zipkin2.reporter.BytesMessageSender;
|
||||||
import zipkin2.reporter.Encoding;
|
import zipkin2.reporter.Encoding;
|
||||||
import zipkin2.reporter.HttpEndpointSupplier;
|
import zipkin2.reporter.HttpEndpointSupplier;
|
||||||
import zipkin2.reporter.HttpEndpointSuppliers;
|
import zipkin2.reporter.HttpEndpointSuppliers;
|
||||||
import zipkin2.reporter.SpanBytesEncoder;
|
|
||||||
import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
|
import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
|
||||||
import zipkin2.reporter.brave.MutableSpanBytesEncoder;
|
import zipkin2.reporter.brave.MutableSpanBytesEncoder;
|
||||||
import zipkin2.reporter.urlconnection.URLConnectionSender;
|
import zipkin2.reporter.urlconnection.URLConnectionSender;
|
||||||
|
|
@ -170,12 +169,6 @@ class ZipkinConfigurations {
|
||||||
@ConditionalOnClass(ZipkinSpanExporter.class)
|
@ConditionalOnClass(ZipkinSpanExporter.class)
|
||||||
static class OpenTelemetryConfiguration {
|
static class OpenTelemetryConfiguration {
|
||||||
|
|
||||||
@Bean
|
|
||||||
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
|
|
||||||
BytesEncoder<Span> zipkinSpanEncoder(Encoding encoding) {
|
|
||||||
return SpanBytesEncoder.forEncoding(encoding);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
@ConditionalOnBean(BytesMessageSender.class)
|
@ConditionalOnBean(BytesMessageSender.class)
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,6 @@ package org.springframework.boot.actuate.autoconfigure.tracing.zipkin;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
import zipkin2.reporter.Encoding;
|
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -83,4 +81,20 @@ public class ZipkinProperties {
|
||||||
this.readTimeout = readTimeout;
|
this.readTimeout = readTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zipkin message encoding.
|
||||||
|
*/
|
||||||
|
public enum Encoding {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JSON.
|
||||||
|
*/
|
||||||
|
JSON,
|
||||||
|
/**
|
||||||
|
* Protocol Buffers v3.
|
||||||
|
*/
|
||||||
|
PROTO3
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,8 @@ class ZipkinAutoConfigurationTests {
|
||||||
@Test
|
@Test
|
||||||
void shouldSupplyBeans() {
|
void shouldSupplyBeans() {
|
||||||
this.contextRunner.run((context) -> assertThat(context).hasSingleBean(Encoding.class)
|
this.contextRunner.run((context) -> assertThat(context).hasSingleBean(Encoding.class)
|
||||||
.hasSingleBean(PropertiesZipkinConnectionDetails.class));
|
.hasSingleBean(PropertiesZipkinConnectionDetails.class)
|
||||||
|
.hasBean("zipkinSpanEncoder"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link OpenTelemetryConfiguration}.
|
* Tests for {@link OpenTelemetryConfiguration}.
|
||||||
|
|
@ -48,6 +49,7 @@ class ZipkinConfigurationsOpenTelemetryConfigurationTests {
|
||||||
@Test
|
@Test
|
||||||
void shouldSupplyBeans() {
|
void shouldSupplyBeans() {
|
||||||
this.contextRunner.withUserConfiguration(SenderConfiguration.class)
|
this.contextRunner.withUserConfiguration(SenderConfiguration.class)
|
||||||
|
.withBean(BytesEncoder.class, () -> mock(BytesEncoder.class))
|
||||||
.run((context) -> assertThat(context).hasSingleBean(ZipkinSpanExporter.class));
|
.run((context) -> assertThat(context).hasSingleBean(ZipkinSpanExporter.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue