From 0830d839ee54a3bad6383f57df45c6b3b65d425e Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Wed, 29 May 2024 10:50:45 -0400 Subject: [PATCH] Add tracing headers to be mapped to string **Auto-cherry-pick to `3.2.x` & `3.1.x`** --- .../kafka/support/AbstractKafkaHeaderMapper.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/spring-kafka/src/main/java/org/springframework/kafka/support/AbstractKafkaHeaderMapper.java b/spring-kafka/src/main/java/org/springframework/kafka/support/AbstractKafkaHeaderMapper.java index 0a1af82679..d7ac37e200 100644 --- a/spring-kafka/src/main/java/org/springframework/kafka/support/AbstractKafkaHeaderMapper.java +++ b/spring-kafka/src/main/java/org/springframework/kafka/support/AbstractKafkaHeaderMapper.java @@ -49,6 +49,15 @@ */ public abstract class AbstractKafkaHeaderMapper implements KafkaHeaderMapper { + private static final String[] DEFAULT_RAW_MAPPED_HEADERS = { + KafkaHeaders.LISTENER_INFO, + "b3", + "traceparent", + "X-B3-TraceId", + "X-B3-SpanId", + "X-B3-Sampled", + "X-B3-Flags"}; + protected final LogAccessor logger = new LogAccessor(LogFactory.getLog(getClass())); // NOSONAR private final List matchers = new ArrayList<>(); @@ -56,7 +65,9 @@ public abstract class AbstractKafkaHeaderMapper implements KafkaHeaderMapper { private final Map rawMappedHeaders = new HashMap<>(); { - this.rawMappedHeaders.put(KafkaHeaders.LISTENER_INFO, true); + for (String defaultRawMappedHeader : DEFAULT_RAW_MAPPED_HEADERS) { + this.rawMappedHeaders.put(defaultRawMappedHeader, true); + } } private final boolean outbound; @@ -153,6 +164,8 @@ public void setCharset(Charset charset) { * {@code byte[]} for outbound). Inbound headers that match will be mapped as * {@code byte[]} unless the corresponding boolean in the map value is true, * in which case it will be mapped as a String. + * Headers mapped by default are: {@code kafka_listenerInfo}, {@code b3}, {@code traceparent}, + * {@code X-B3-TraceId}, {@code X-B3-SpanId}, {@code X-B3-Sampled} and {@code X-B3-Flags}. * @param rawMappedHeaders the header names to not convert and * @since 2.2.5 * @see #setCharset(Charset) @@ -160,7 +173,6 @@ public void setCharset(Charset charset) { */ public void setRawMappedHeaders(Map rawMappedHeaders) { if (!ObjectUtils.isEmpty(rawMappedHeaders)) { - this.rawMappedHeaders.clear(); this.rawMappedHeaders.putAll(rawMappedHeaders); } }