Согласно логике в AbstractJackson2MessageConverter
, требуется свойство contentType
AMQP:
MessageProperties properties = message.getMessageProperties();
if (properties != null) {
String contentType = properties.getContentType();
if (contentType != null && contentType.contains(this.supportedContentType.getSubtype())) {
Я думаю, что нам нужно внести улучшения в этот компонент, не будьте строгими с ним.Точно так же, как мы можем сделать с MappingJackson2MessageConverter
через:
/**
* Whether this converter should convert messages for which no content type
* could be resolved through the configured
* {@link org.springframework.messaging.converter.ContentTypeResolver}.
* <p>A converter can configured to be strict only when a
* {@link #setContentTypeResolver contentTypeResolver} is configured and the
* list of {@link #getSupportedMimeTypes() supportedMimeTypes} is not be empty.
* <p>When this flag is set to {@code true}, {@link #supportsMimeType(MessageHeaders)}
* will return {@code false} if the {@link #setContentTypeResolver contentTypeResolver}
* is not defined or if no content-type header is present.
*/
public void setStrictContentTypeMatch(boolean strictContentTypeMatch) {
, что по умолчанию равно false
.
Только способ преодолеть проблему с пропущенным contentType
, но все же приступим к преобразованию сообщений JSON, я вижу в пользовательской реализации org.springframework.amqp.support.converter.AbstractMessageConverter
, где вы можете комбинировать логику Jackson2JsonMessageConverter
и не заботиться о пропущенном свойстве contentType
.
Не стесняйтесь подниматьпроблема с Spring AMQP для улучшения AbstractJackson2MessageConverter
!