Skip to content

Commit 7f14105

Browse files
artembilanspring-builds
authored andcommitted
Add tracing headers to be mapped to string (#3286)
Fixed: #3286 For more context, see this Spring Cloud Stream issue: spring-cloud/spring-cloud-stream#2905 (cherry picked from commit 12ed737)
1 parent bb940f9 commit 7f14105

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

spring-kafka/src/main/java/org/springframework/kafka/support/AbstractKafkaHeaderMapper.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,25 @@
4949
*/
5050
public abstract class AbstractKafkaHeaderMapper implements KafkaHeaderMapper {
5151

52+
private static final String[] DEFAULT_RAW_MAPPED_HEADERS = {
53+
KafkaHeaders.LISTENER_INFO,
54+
"b3",
55+
"traceparent",
56+
"X-B3-TraceId",
57+
"X-B3-SpanId",
58+
"X-B3-Sampled",
59+
"X-B3-Flags"};
60+
5261
protected final LogAccessor logger = new LogAccessor(LogFactory.getLog(getClass())); // NOSONAR
5362

5463
private final List<HeaderMatcher> matchers = new ArrayList<>();
5564

5665
private final Map<String, Boolean> rawMappedHeaders = new HashMap<>();
5766

5867
{
59-
this.rawMappedHeaders.put(KafkaHeaders.LISTENER_INFO, true);
68+
for (String defaultRawMappedHeader : DEFAULT_RAW_MAPPED_HEADERS) {
69+
this.rawMappedHeaders.put(defaultRawMappedHeader, true);
70+
}
6071
}
6172

6273
private final boolean outbound;
@@ -153,14 +164,15 @@ public void setCharset(Charset charset) {
153164
* {@code byte[]} for outbound). Inbound headers that match will be mapped as
154165
* {@code byte[]} unless the corresponding boolean in the map value is true,
155166
* in which case it will be mapped as a String.
167+
* Headers mapped by default are: {@code kafka_listenerInfo}, {@code b3}, {@code traceparent},
168+
* {@code X-B3-TraceId}, {@code X-B3-SpanId}, {@code X-B3-Sampled} and {@code X-B3-Flags}.
156169
* @param rawMappedHeaders the header names to not convert and
157170
* @since 2.2.5
158171
* @see #setCharset(Charset)
159172
* @see #setMapAllStringsOut(boolean)
160173
*/
161174
public void setRawMappedHeaders(Map<String, Boolean> rawMappedHeaders) {
162175
if (!ObjectUtils.isEmpty(rawMappedHeaders)) {
163-
this.rawMappedHeaders.clear();
164176
this.rawMappedHeaders.putAll(rawMappedHeaders);
165177
}
166178
}

0 commit comments

Comments
 (0)