Spring 基于对象类型的集成对象转换器
Spring integration Object transformer based on Object Type
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
,returns String
body 喜欢你的 JSON 或 XML.
从另一端需要知道另一个 AMQP 端是如何工作的(生产者)。它是否为那些特定消息填充 content-type
header?
我们可以使用 <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
。
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
,returns String
body 喜欢你的 JSON 或 XML.
从另一端需要知道另一个 AMQP 端是如何工作的(生产者)。它是否为那些特定消息填充 content-type
header?
我们可以使用 <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
。