Spring集成基于Object Type的Object变换器

时间:2015-07-03 08:32:52

标签: json xml spring spring-integration

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

1 个答案:

答案 0 :(得分:2)

您可以使用Router来实现这一目标。

我不确定<int:payload-type-router>是否对此有帮助,因为我确定您的AMQP适配器基于默认SimpleMessageConverter,它会为正文返回String就像你的JSON或XML一样。

从另一方面需要了解其他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