`@ RabbitListener`` @ SendTo` Ответ не работает при возврате сообщения `org.springframework.messaging.Message‹? ›`

Я успешно использую метод, который возвращает мой бизнес-объект с аннотацией @RabbitListener.

Зарегистрированный bean-компонент Jackson2JsonMessageConverter с именем messageConverter отлично преобразует входящее сообщение JSON в ожидаемый тип и возвращаемый бизнес-объект в JSON.

// This works!!
@RabbitListener(...)
@SendTo("#{responseDestination})
MyBusinessResponseObject handle(MyBusinessRequestObject request) {
  ...
  ...
  ...
}

Но теперь, когда я начинаю возвращать org.springframework.messageing.Message<MyBusinessResponseObject>, я получаю исключения в журналах, говорящие: SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.xxx.xxx.xxx.domain.MyBusinessResponseObject

// This DOESN'T work
@RabbitListener(...)
@SendTo("#{responseDestination})
Message<MyBusinessResponseObject> handle(MyBusinessRequestObject request) {
  ...
  ...
  ...
}

Я пробовал явно сослаться на мой SimpleRabbitListenerContainerFactory в свойстве containerFactory аннотации @RabbitLisener, но все равно получаю ту же ошибку.

Я не уверен, почему в этом случае срабатывает SimpleMessageConverter и откуда он исходит.

Как мне переопределить тот конвертер сообщений, который используется для преобразования моего нового типа возврата?

Спасибо!


person nemo    schedule 07.08.2018    source источник


Ответы (1)


Это ошибка; откройте проблему JIRA.

person Gary Russell    schedule 07.08.2018
comment
Похоже, что MessagingMessageListenerAdapter должен переопределить setMessageConverter() и передать аргумент свойству MessagingMessageConverter.payloadConverter. - person Artem Bilan; 07.08.2018