spring集成有一个转换器,可以将有效载荷转换为JSON/XML
问题是由于不同的服务通过同一个Messaging channel [AMQP]进行通信。
我想将JSON type payload分离到一个频道,并将XML type payload分离到另一个频道。

<amqp:inbound-channel-adapter channel="inputChannel" listener-container="messageListener"/>
<int:chain input-channel="inputChannel">
    <int:object-to-json-transformer object-mapper="jsonMapper" />
    <!--- based on payload type --->
    <tranformer ref="xmlMarshalUnmarshal" method="doTransform" />
</int:chain>

有什么想法吗?我正在使用最新的Spring 4.1.x

最佳答案

您可以通过Router实现这一点。
我不确定<int:payload-type-router>是否有帮助,因为我确定您的amqp适配器是基于默认的SimpleMessageConverter,它为您的json或xml之类的body返回String
另一方需要知道另一方AMQP的工作原理(生产者)。它是否为那些特定的消息填充content-type头?
有了它,我们可以使用<header-value-router>

<header-value-router input-channel="inputChannel" header-name="contentType">
    <int:mapping value="text/json" channel="jsonTransformerChannel" />
    <int:mapping value="text/xml" channel="xmlTransformerChannel" />
</header-value-router>

从另一方面来说,您总是可以通过body注入<int-amqp:inbound-channel-adapter>来转换您的message-converter

10-04 16:54
查看更多