mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-07-15 01:07:30 +08:00
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");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -16,8 +16,10 @@
|
||||
|
||||
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.SpanBytesEncoder;
|
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration;
|
||||
@ -41,7 +43,7 @@ import org.springframework.context.annotation.Import;
|
||||
* @since 3.0.0
|
||||
*/
|
||||
@AutoConfiguration(after = RestTemplateAutoConfiguration.class)
|
||||
@ConditionalOnClass(BytesMessageSender.class)
|
||||
@ConditionalOnClass(Encoding.class)
|
||||
@Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class })
|
||||
@EnableConfigurationProperties(ZipkinProperties.class)
|
||||
public class ZipkinAutoConfiguration {
|
||||
@ -54,8 +56,17 @@ public class ZipkinAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public Encoding encoding(ZipkinProperties properties) {
|
||||
return properties.getEncoding();
|
||||
Encoding encoding(ZipkinProperties properties) {
|
||||
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.HttpEndpointSupplier;
|
||||
import zipkin2.reporter.HttpEndpointSuppliers;
|
||||
import zipkin2.reporter.SpanBytesEncoder;
|
||||
import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
|
||||
import zipkin2.reporter.brave.MutableSpanBytesEncoder;
|
||||
import zipkin2.reporter.urlconnection.URLConnectionSender;
|
||||
@ -170,12 +169,6 @@ class ZipkinConfigurations {
|
||||
@ConditionalOnClass(ZipkinSpanExporter.class)
|
||||
static class OpenTelemetryConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
|
||||
BytesEncoder<Span> zipkinSpanEncoder(Encoding encoding) {
|
||||
return SpanBytesEncoder.forEncoding(encoding);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@ConditionalOnBean(BytesMessageSender.class)
|
||||
|
@ -18,8 +18,6 @@ package org.springframework.boot.actuate.autoconfigure.tracing.zipkin;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import zipkin2.reporter.Encoding;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
@ -83,4 +81,20 @@ public class ZipkinProperties {
|
||||
this.readTimeout = readTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Zipkin message encoding.
|
||||
*/
|
||||
public enum Encoding {
|
||||
|
||||
/**
|
||||
* JSON.
|
||||
*/
|
||||
JSON,
|
||||
/**
|
||||
* Protocol Buffers v3.
|
||||
*/
|
||||
PROTO3
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -40,7 +40,8 @@ class ZipkinAutoConfigurationTests {
|
||||
@Test
|
||||
void shouldSupplyBeans() {
|
||||
this.contextRunner.run((context) -> assertThat(context).hasSingleBean(Encoding.class)
|
||||
.hasSingleBean(PropertiesZipkinConnectionDetails.class));
|
||||
.hasSingleBean(PropertiesZipkinConnectionDetails.class)
|
||||
.hasBean("zipkinSpanEncoder"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -31,6 +31,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
/**
|
||||
* Tests for {@link OpenTelemetryConfiguration}.
|
||||
@ -48,6 +49,7 @@ class ZipkinConfigurationsOpenTelemetryConfigurationTests {
|
||||
@Test
|
||||
void shouldSupplyBeans() {
|
||||
this.contextRunner.withUserConfiguration(SenderConfiguration.class)
|
||||
.withBean(BytesEncoder.class, () -> mock(BytesEncoder.class))
|
||||
.run((context) -> assertThat(context).hasSingleBean(ZipkinSpanExporter.class));
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@ bom {
|
||||
library("Zipkin Reporter", "3.3.0") {
|
||||
group("io.zipkin.reporter2") {
|
||||
imports = [
|
||||
"zipkin-reporter-bom"
|
||||
"zipkin-reporter-bom"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user