diff --git a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc index fdf308789..f387028a2 100644 --- a/docs/src/main/asciidoc/spring-cloud-sleuth.adoc +++ b/docs/src/main/asciidoc/spring-cloud-sleuth.adoc @@ -887,6 +887,9 @@ The following example shows setting the sender type for `web`: spring.zipkin.sender.type: web ---- +IMPORTANT: If you have Kafka on the classpath, you need to set +`spring.zipkin.kafka.enabled` to `true` apart from setting the sender type. + To customize the `RestTemplate` that sends spans to Zipkin via HTTP, you can register the `ZipkinRestTemplateCustomizer` bean. diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinKafkaSenderConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinKafkaSenderConfiguration.java index dc00c446e..406246459 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinKafkaSenderConfiguration.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinKafkaSenderConfiguration.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.kafka.KafkaProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; @@ -35,6 +36,7 @@ import zipkin2.reporter.kafka11.KafkaSender; @ConditionalOnBean(KafkaProperties.class) @ConditionalOnMissingBean(Sender.class) @Conditional(ZipkinSenderCondition.class) +@ConditionalOnProperty(value = "spring.zipkin.kafka.enabled", havingValue = "true") class ZipkinKafkaSenderConfiguration { @Value("${spring.zipkin.kafka.topic:zipkin}") private String topic; diff --git a/spring-cloud-sleuth-zipkin/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-sleuth-zipkin/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 000000000..8ccc93e35 --- /dev/null +++ b/spring-cloud-sleuth-zipkin/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,8 @@ +{"properties": [ + { + "name": "spring.zipkin.kafka.enabled", + "type": "java.lang.Boolean", + "description": "Should Kafka Zipkin sender be enabled. With Kafka on the classpath you have to set this value to true to send spans to Zipkin via Kafka.", + "defaultValue": false + } +]} \ No newline at end of file diff --git a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfigurationTests.java b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfigurationTests.java index aefebd456..c650a84a8 100644 --- a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfigurationTests.java +++ b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin2/ZipkinAutoConfigurationTests.java @@ -124,7 +124,8 @@ public class ZipkinAutoConfigurationTests { @Test public void overrideKafkaTopic() throws Exception { context = new AnnotationConfigApplicationContext(); - addEnvironment(context, "spring.zipkin.kafka.topic:zipkin2"); + addEnvironment(context, "spring.zipkin.kafka.topic:zipkin2", + "spring.zipkin.kafka.enabled:true"); context.register( PropertyPlaceholderAutoConfiguration.class, KafkaAutoConfiguration.class,