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
。