0

我有IntegrationFlow它监听 AMQP 消息,我想记录 XML 消息有效负载。

IntegrationFlows.from(
    Amqp.inboundAdapter(rabbitConnectionFactory, QUEUE)
            .messageConverter(new MarshallingMessageConverter(xmlMarshaller))
)
    .log(INFO, "org.springframework.amqp")
    ...
    .get();

当我使用MarshallingMessageConverterin 时,在步骤Amqp.inboundAdapter()中记录了已经反序列化的对象而不是 XML 有效负载.log()

我可以通过默认SimpleMessageConverter和显式.transform()步骤解决这个问题。

有没有办法记录原始 XML 有效负载并继续使用MarshallingMessageConverter

4

1 回答 1

2

一种方法是将 a 添加MessagePostProcessor到侦听器容器中:

Amqp.inboundAdapter(rabbitConnectionFactory, QUEUE)
                        .messageConverter(new MarshallingMessageConverter(xmlMarshaller))
                        .configureContainer(container ->
                                container.afterReceivePostProcessors(message ->
                                        logger.info(new String(message.getBody()))))

当然,另一个是扩展它MarshallingMessageConverter并覆盖它fromMessage(Message message)以在调用之前记录正文super.fromMessage()

于 2021-03-09T14:52:15.030 回答