Removed the conditionality on a bena of KafkaProperties type; fixes gh-1209
This commit is contained in:
@@ -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<String, Object> 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<String, Object> 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();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user