基于XML有效载荷的聚合关联策略

时间:2015-09-21 17:56:04

标签: aggregate spring-integration

问题:如何根据有效负载中的XML值关联聚合器的消息?我有一个scenerio,我称之为第三方应用程序,它只返回一个xml响应。根据有效负载中的xml值,我想将消息关联起来,以便将一个响应反馈给消费者。

使用标题属性的示例

@CorrelationStrategy
public Object correlate(Message message) throws JMSException  {         
    return message.getHeaders().get("JMSXUserID");
}

解决方案备注:

  • 如下所述,并在xml有效负载支持的spring文档中引用。

http://docs.spring.io/spring-integration/reference/html/xml.html#xpath-spel-function

应用示例配置:

<aggregator
        id="agg"
        input-channel="jmsInChannel"
        output-channel="outputChannel"
        ref="AggregatorPOJO"
        method="combineResponesMessages"
        correlation-strategy-expression="#xpath(payload, '/test/name')"
        release-strategy="AggregatorPOJO"
        release-strategy-method="isComplete"/>

这将关联以下xml。

<test><name>test1</name></test>

2 个答案:

答案 0 :(得分:1)

看看#xpath() SpEL功能是否可以为您提供帮助,例如:

correlation-strategy-expression="#xpath(payload, '/name')"

其中payload是相关消息的某些XML表示形式的有效负载,/name是针对该有效负载的XPath

你应该确定{CLARSPATH上有spring-integratrion-xml jar。

答案 1 :(得分:0)

你必须解析XML;您可能可以使用简单的正则表达式Pattern,或者您可能必须将有效负载转换为DOM以用于更复杂的情况。