diff --git a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/messaging/TraceSpringIntegrationAutoConfiguration.java b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/messaging/TraceSpringIntegrationAutoConfiguration.java index 2758e00fa..fadbdfee2 100644 --- a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/messaging/TraceSpringIntegrationAutoConfiguration.java +++ b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/instrument/messaging/TraceSpringIntegrationAutoConfiguration.java @@ -38,9 +38,11 @@ import org.springframework.context.annotation.ConditionContext; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ConfigurationCondition; +import org.springframework.core.Ordered; import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.integration.channel.interceptor.GlobalChannelInterceptorWrapper; import org.springframework.integration.config.GlobalChannelInterceptor; +import org.springframework.messaging.support.ImmutableMessageChannelInterceptor; import org.springframework.messaging.support.MessageHeaderAccessor; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; @@ -86,6 +88,16 @@ public class TraceSpringIntegrationAutoConfiguration { traceMessagePropagationGetter, remoteServiceNameMapper(properties), messageSpanCustomizer); } + @Bean + GlobalChannelInterceptorWrapper afterSleuthImmutableMessageChannelInterceptor( + SleuthIntegrationMessagingProperties properties) { + GlobalChannelInterceptorWrapper interceptor = new GlobalChannelInterceptorWrapper( + new ImmutableMessageChannelInterceptor()); + interceptor.setOrder(Ordered.LOWEST_PRECEDENCE); + interceptor.setPatterns(properties.getPatterns()); + return interceptor; + } + static Function remoteServiceNameMapper(SleuthMessagingProperties properties) { return s -> { if (!StringUtils.hasText(s)) {