|
49 | 49 | */
|
50 | 50 | public abstract class AbstractKafkaHeaderMapper implements KafkaHeaderMapper {
|
51 | 51 |
|
| 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 | + |
52 | 61 | protected final LogAccessor logger = new LogAccessor(LogFactory.getLog(getClass())); // NOSONAR
|
53 | 62 |
|
54 | 63 | private final List<HeaderMatcher> matchers = new ArrayList<>();
|
55 | 64 |
|
56 | 65 | private final Map<String, Boolean> rawMappedHeaders = new HashMap<>();
|
57 | 66 |
|
58 | 67 | {
|
59 |
| - this.rawMappedHeaders.put(KafkaHeaders.LISTENER_INFO, true); |
| 68 | + for (String defaultRawMappedHeader : DEFAULT_RAW_MAPPED_HEADERS) { |
| 69 | + this.rawMappedHeaders.put(defaultRawMappedHeader, true); |
| 70 | + } |
60 | 71 | }
|
61 | 72 |
|
62 | 73 | private final boolean outbound;
|
@@ -153,14 +164,15 @@ public void setCharset(Charset charset) {
|
153 | 164 | * {@code byte[]} for outbound). Inbound headers that match will be mapped as
|
154 | 165 | * {@code byte[]} unless the corresponding boolean in the map value is true,
|
155 | 166 | * 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}. |
156 | 169 | * @param rawMappedHeaders the header names to not convert and
|
157 | 170 | * @since 2.2.5
|
158 | 171 | * @see #setCharset(Charset)
|
159 | 172 | * @see #setMapAllStringsOut(boolean)
|
160 | 173 | */
|
161 | 174 | public void setRawMappedHeaders(Map<String, Boolean> rawMappedHeaders) {
|
162 | 175 | if (!ObjectUtils.isEmpty(rawMappedHeaders)) {
|
163 |
| - this.rawMappedHeaders.clear(); |
164 | 176 | this.rawMappedHeaders.putAll(rawMappedHeaders);
|
165 | 177 | }
|
166 | 178 | }
|
|
0 commit comments