【问题标题】:Spring integration Object transformer based on Object Type基于Object Type的Spring集成Object Transformer
【发布时间】:2015-09-21 00:32:06
【问题描述】:

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

【问题讨论】:

  • 转换后你想为每个通道分开吗?
  • @SarfarazKhan 推送到不同的频道,以便您可以转换。

标签: json xml spring spring-integration


【解决方案1】:

您可以使用Router 来实现。

我不确定&lt;int:payload-type-router&gt; 是否有帮助,因为我确定您的 AMQP 适配器基于默认的 SimpleMessageConverter,它会为 JSON 或 XML 之类的正文返回 String

从另一方需要知道另一方 AMQP 是如何工作的(生产者)。它是否为这些特定消息填充 content-type 标头?

我们可以使用&lt;header-value-router&gt;:

<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>

从另一面,您始终可以使用&lt;int-amqp:inbound-channel-adapter&gt; 注入message-converter 转换您的body

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 2018-01-18
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2012-05-16
    • 2021-04-15
    相关资源
    最近更新 更多