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
答案 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
。