Как поместить сообщение в очередь в формате 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.

1 ответ

Решение

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

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

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

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

Где RabbitTemplate настроен с Jackson2JsonMessageConverter,

Другие вопросы по тегам