0

目前我正在尝试使用 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放入队列中。

4

1 回答 1

1

两个问题:

  1. AMQP 支持的通道旨在用于持久性,而不是简单地向 RabbitMQ 发送消息;默认情况下,整个消息是序列化的(使用 RabbitTemplate 的转换器,而不是通道的)。
  2. 通道上的消息转换器仅用于转换 DataTypes 的通道,而不用于序列化。

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

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

其中RabbitTemplate配置了Jackson2JsonMessageConverter.

于 2017-05-19T12:39:58.710 回答