diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessageHeaderPropagation.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessageHeaderPropagation.java index 13ec0e0f8..4d0fffa9c 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessageHeaderPropagation.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/MessageHeaderPropagation.java @@ -151,11 +151,18 @@ enum MessageHeaderPropagation nativeHeaders); } if (nativeHeaders instanceof Map) { - ((Map) nativeHeaders).put(key, Collections.singletonList(value)); + Map> copy = toNativeHeaderMap( + (Map>) nativeHeaders); + copy.put(key, Collections.singletonList(value)); + accessor.setHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS, copy); } } } + private Map> toNativeHeaderMap(Map> map) { + return (map != null ? new LinkedMultiValueMap<>(map) : Collections.emptyMap()); + } + @Override public String get(MessageHeaderAccessor accessor, String key) { try {