在 Spring Integration 的 Amqp inboundAdapter 中使用 MarshallingMessageConverter 时记录 XML 负载
Log XML payload when MarshallingMessageConverter is used in Spring Integration's Amqp inboundAdapter
我有 IntegrationFlow
监听 AMQP 消息,我想记录 XML 消息负载。
IntegrationFlows.from(
Amqp.inboundAdapter(rabbitConnectionFactory, QUEUE)
.messageConverter(new MarshallingMessageConverter(xmlMarshaller))
)
.log(INFO, "org.springframework.amqp")
...
.get();
当我在 Amqp.inboundAdapter()
中使用 MarshallingMessageConverter
时,在 .log()
步骤
中记录了已经反序列化的对象而不是 XML 有效负载
我可以通过默认 SimpleMessageConverter
和显式 .transform()
步骤解决这个问题。
有没有办法记录原始 XML 负载并继续使用 MarshallingMessageConverter
?
其中一种方法是将 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()
.
之前记录正文
我有 IntegrationFlow
监听 AMQP 消息,我想记录 XML 消息负载。
IntegrationFlows.from(
Amqp.inboundAdapter(rabbitConnectionFactory, QUEUE)
.messageConverter(new MarshallingMessageConverter(xmlMarshaller))
)
.log(INFO, "org.springframework.amqp")
...
.get();
当我在 Amqp.inboundAdapter()
中使用 MarshallingMessageConverter
时,在 .log()
步骤
我可以通过默认 SimpleMessageConverter
和显式 .transform()
步骤解决这个问题。
有没有办法记录原始 XML 负载并继续使用 MarshallingMessageConverter
?
其中一种方法是将 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()
.