From 1780641ee3d4e56eab2b6021357e58af55ef890b Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 12 Feb 2019 18:52:40 +0100 Subject: [PATCH] Removed the conditionality on a bena of KafkaProperties type; fixes gh-1209 --- .../ZipkinKafkaSenderConfiguration.java | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) 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 5556ab288..84f21a750 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 @@ -24,11 +24,11 @@ import zipkin2.reporter.Sender; import zipkin2.reporter.kafka11.KafkaSender; 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.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.sleuth.zipkin2.ZipkinAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; @@ -36,37 +36,43 @@ import org.springframework.context.annotation.Configuration; @Configuration @ConditionalOnClass(ByteArraySerializer.class) -@ConditionalOnBean(KafkaProperties.class) @ConditionalOnMissingBean(name = ZipkinAutoConfiguration.SENDER_BEAN_NAME) @Conditional(ZipkinSenderCondition.class) @ConditionalOnProperty(value = "spring.zipkin.sender.type", havingValue = "kafka") class ZipkinKafkaSenderConfiguration { - @Value("${spring.zipkin.kafka.topic:zipkin}") - private String topic; + @Configuration + @EnableConfigurationProperties(KafkaProperties.class) + static class ZipkinKafkaSenderBeanConfiguration { - static String join(List parts) { - StringBuilder to = new StringBuilder(); - for (int i = 0, length = parts.size(); i < length; i++) { - to.append(parts.get(i)); - if (i + 1 < length) { - to.append(','); + @Value("${spring.zipkin.kafka.topic:zipkin}") + private String topic; + + static String join(List parts) { + StringBuilder to = new StringBuilder(); + for (int i = 0, length = parts.size(); i < length; i++) { + to.append(parts.get(i)); + if (i + 1 < length) { + to.append(','); + } } + return to.toString(); } - return to.toString(); - } - @Bean(ZipkinAutoConfiguration.SENDER_BEAN_NAME) - Sender kafkaSender(KafkaProperties config) { - Map properties = config.buildProducerProperties(); - properties.put("key.serializer", ByteArraySerializer.class.getName()); - properties.put("value.serializer", ByteArraySerializer.class.getName()); - // Kafka expects the input to be a String, but KafkaProperties returns a list - Object bootstrapServers = properties.get("bootstrap.servers"); - if (bootstrapServers instanceof List) { - properties.put("bootstrap.servers", join((List) bootstrapServers)); + @Bean(ZipkinAutoConfiguration.SENDER_BEAN_NAME) + Sender kafkaSender(KafkaProperties config) { + Map properties = config.buildProducerProperties(); + properties.put("key.serializer", ByteArraySerializer.class.getName()); + properties.put("value.serializer", ByteArraySerializer.class.getName()); + // Kafka expects the input to be a String, but KafkaProperties returns a list + Object bootstrapServers = properties.get("bootstrap.servers"); + if (bootstrapServers instanceof List) { + properties.put("bootstrap.servers", join((List) bootstrapServers)); + } + return KafkaSender.newBuilder().topic(this.topic).overrides(properties) + .build(); } - return KafkaSender.newBuilder().topic(this.topic).overrides(properties).build(); + } }