如何使用 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.
放入队列
两个问题:
- AMQP 支持的通道用于持久性,而不是简单地向 RabbitMQ 发送消息;默认情况下,整个消息被序列化(使用 RabbitTemplate 的转换器,而不是通道的)。
- 通道上的消息转换器仅在通道上用于转换数据类型,而不用于序列化。
使用出站通道适配器...
.handle(Amqp.outboundAdapter(rabbitTemplate).routingKey(NOTE_OCRED_QUEUE));
其中RabbitTemplate
配置了Jackson2JsonMessageConverter
。
目前我正在尝试将消息放入 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.
放入队列两个问题:
- AMQP 支持的通道用于持久性,而不是简单地向 RabbitMQ 发送消息;默认情况下,整个消息被序列化(使用 RabbitTemplate 的转换器,而不是通道的)。
- 通道上的消息转换器仅在通道上用于转换数据类型,而不用于序列化。
使用出站通道适配器...
.handle(Amqp.outboundAdapter(rabbitTemplate).routingKey(NOTE_OCRED_QUEUE));
其中RabbitTemplate
配置了Jackson2JsonMessageConverter
。