diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java index 99c6a792c..1bfff8c76 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/MessageConverterConfigurer.java @@ -261,21 +261,7 @@ public class MessageConverterConfigurer .getField(MessageConverterConfigurer.this.headersField, message.getHeaders()); MimeType contentType = this.mimeType; -// /* -// * NOTE: The below code for BINDER_ORIGINAL_CONTENT_TYPE is to support legacy -// * message format established in 1.x version of the framework and should/will -// * no longer be supported in 3.x -// */ -// if (message.getHeaders() -// .containsKey(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE)) { -// Object ct = message.getHeaders() -// .get(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE); -// contentType = ct instanceof String ? MimeType.valueOf((String) ct) -// : (ct == null ? this.mimeType : (MimeType) ct); -// headersMap.put(MessageHeaders.CONTENT_TYPE, contentType); -// headersMap.remove(BinderHeaders.BINDER_ORIGINAL_CONTENT_TYPE); -// } -// // == end legacy note + if (!message.getHeaders().containsKey(MessageHeaders.CONTENT_TYPE)) { headersMap.put(MessageHeaders.CONTENT_TYPE, contentType); diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/ContentTypeConfiguration.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/ContentTypeConfiguration.java index 067d608c6..d92500bb8 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/ContentTypeConfiguration.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/config/ContentTypeConfiguration.java @@ -18,6 +18,7 @@ package org.springframework.cloud.stream.config; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import com.fasterxml.jackson.databind.ObjectMapper; @@ -29,6 +30,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Role; import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.integration.support.converter.ConfigurableCompositeMessageConverter; +import org.springframework.integration.support.converter.DefaultDatatypeChannelMessageConverter; import org.springframework.messaging.converter.MessageConverter; /** @@ -44,11 +46,14 @@ class ContentTypeConfiguration { ObjectProvider objectMapperObjectProvider, List customMessageConverters) { + customMessageConverters = customMessageConverters.stream() + .filter(c -> !(c instanceof DefaultDatatypeChannelMessageConverter)).collect(Collectors.toList()); + CompositeMessageConverterFactory factory = new CompositeMessageConverterFactory(new ArrayList<>(), objectMapperObjectProvider.getIfAvailable(ObjectMapper::new)); - ArrayList messageConverters = new ArrayList<>(factory.getMessageConverterForAllRegistered().getConverters()); - messageConverters.addAll(customMessageConverters); + ArrayList messageConverters = new ArrayList<>(customMessageConverters); + messageConverters.addAll(factory.getMessageConverterForAllRegistered().getConverters()); return new ConfigurableCompositeMessageConverter(messageConverters); }