如何使用 Spring 集成 AMQP 以 json 格式将消息放入队列

How to put a msg to queue as json format using 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 的转换器,而不是通道的)。
  2. 通道上的消息转换器仅在通道上用于转换数据类型,而不用于序列化。

使用出站通道适配器...

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

其中RabbitTemplate配置了Jackson2JsonMessageConverter