diff --git a/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageExtractAdapter.java b/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageExtractAdapter.java index d11e4f7fc43..2d6e1befd70 100644 --- a/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageExtractAdapter.java +++ b/dd-java-agent/instrumentation/spring/spring-messaging-4.0/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageExtractAdapter.java @@ -10,6 +10,7 @@ import java.util.Map; import java.util.function.Function; import org.springframework.messaging.Message; +import org.springframework.messaging.MessageHeaders; public final class SpringMessageExtractAdapter implements AgentPropagation.ContextVisitor> { @@ -33,7 +34,12 @@ public String apply(String key) { @Override public void forEachKey(Message carrier, AgentPropagation.KeyClassifier classifier) { - for (Map.Entry header : carrier.getHeaders().entrySet()) { + final MessageHeaders messageHeaders = carrier.getHeaders(); + if (messageHeaders == null || messageHeaders.isEmpty()) { + return; + } + + for (Map.Entry header : messageHeaders.entrySet()) { Object headerValue = header.getValue(); if ("_datadog".equals(header.getKey())) { if (headerValue instanceof String) {