Как поместить сообщение в очередь в формате 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 ответ
Решение
Две проблемы:
- Каналы с поддержкой AMQP предназначены для постоянства, а не просто для отправки сообщений в RabbitMQ; по умолчанию все сообщение сериализуется (с использованием преобразователя RabbitTemplate, а не канала).
- Преобразователи сообщений на каналах используются только на каналах для преобразования типов данных, а не для сериализации.
Использовать адаптер исходящего канала...
.handle(Amqp.outboundAdapter(rabbitTemplate).routingKey(NOTE_OCRED_QUEUE));
Где RabbitTemplate
настроен с Jackson2JsonMessageConverter
,