Как поместить сообщение в очередь в формате json с помощью Spring Integration AMQP

В настоящее время я пытаюсь поставить сообщение в очередь с форматом json. Ниже мой фрагмент кода, но он не работает.

return IntegrationFlows.from(Amqp.inboundAdapter(connectionFactory, NOTE_INCOMING_QUEUE)
                .concurrentConsumers(2))
                .transform(new JsonToObjectTransformer(Note.class))
                .handle(Note.class, (note, header) -> {
                    // doing something
                    return note;
                })
                .channel(Amqp.channel(connectionFactory).queueName(NOTE_OCRED_QUEUE).messageConverter(
                        new MappingJackson2MessageConverter()))
                .get();

Сообщение было помещено в очередь как application / x-java-serialized-object.


person Kane    schedule 19.05.2017    source источник


Ответы (1)


Две проблемы:

  1. Каналы с поддержкой AMQP предназначены для сохранения, а не просто для отправки сообщений RabbitMQ; по умолчанию все сообщение сериализуется (с использованием конвертера RabbitTemplate, а не канала).
  2. Конвертеры сообщений в каналах используются только в каналах для преобразования типов данных, а не для сериализации.

Используйте адаптер исходящего канала ...

.handle(Amqp.outboundAdapter(rabbitTemplate).routingKey(NOTE_OCRED_QUEUE));

Если RabbitTemplate настроен с Jackson2JsonMessageConverter.

person Gary Russell    schedule 19.05.2017