问题:如何根据有效负载中的XML值关联聚合器的消息?我有一个scenerio,我称之为第三方应用程序,它只返回一个xml响应。根据有效负载中的xml值,我想将消息关联起来,以便将一个响应反馈给消费者。
使用标题属性的示例
@CorrelationStrategy
public Object correlate(Message message) throws JMSException {
return message.getHeaders().get("JMSXUserID");
}
解决方案备注:
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>
答案 0 :(得分:1)
看看#xpath()
SpEL功能是否可以为您提供帮助,例如:
correlation-strategy-expression="#xpath(payload, '/name')"
其中payload
是相关消息的某些XML表示形式的有效负载,/name
是针对该有效负载的XPath
。
你应该确定{CLARSPATH上有spring-integratrion-xml
jar。
答案 1 :(得分:0)
你必须解析XML;您可能可以使用简单的正则表达式Pattern
,或者您可能必须将有效负载转换为DOM以用于更复杂的情况。