首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WSO2ESB并行SOAP调用

WSO2ESB并行SOAP调用
EN

Stack Overflow用户
提问于 2015-03-19 08:58:06
回答 2查看 211关注 0票数 0

我有以下问题:

开发一个基于WSDL的代理,该代理并行调用几个不同的SOAP服务并返回响应:

代码语言:javascript
运行
复制
<inSequence>
<log level="full"/>
<iterate xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:agg="http://www.test.ro/aggregate"
  preservePayload="true"
  attachPath="//soapenv:Body"
  expression="//agg:AggregateRequest/agg:messageRequest">
    <target>
        <sequence>
            <property name="messageId"
            expression="//soapenv:Body/agg:messageRequest/agg:messageId[node()]"/>
            <property name="endpoint"
            expression="//soapenv:Body/agg:messageRequest/agg:endpoint[node()]"/>
            <xslt key="CleanPayload" source="/"/>
            <send>
                <endpoint key="MirrorEndpoint"/>
            </send>
        </sequence>
    </target>
</iterate>
</inSequence>

<outSequence>
<property name="resp" scope="default">
    <agg:AggregateResponse xmlns:agg="http://www.test.ro/aggregate"/>
</property>
<aggregate>
    <completeCondition timeout="10">
        <messageCount min="-1" max="-1"/>
    </completeCondition>
    <onComplete xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        expression="$body/*"
        enclosingElementProperty="resp">
        <log level="full"/>
        <send/>
    </onComplete>
</aggregate>
</outSequence>

我面临的挑战是:

  • 如何将messageId从inSequence传递给outSequence,以便将响应与请求匹配(类似于Message的本地环境)
  • 如何使用agg:终结点的文本设置端点键

我知道这可能是个新手问题,但我很难找到关于这个主题的好教程。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-19 15:08:00

当您在In序列中设置属性(作用域默认值)时,可以在Out序列中找到它的值。

在您的顺序中设置此属性:

代码语言:javascript
运行
复制
<property name="IN_MESSAGE_ID" expression="get-property('MessageID')"/>

您可以在Out序列中使用get-property('IN_MESSAGE_ID')

如果要将消息发送到动态地址,可以设置" to“标头并使用发送中介器:

代码语言:javascript
运行
复制
<header name="To" expression="get-property('MY_DESTINATION')"/>
<send/>
票数 1
EN

Stack Overflow用户

发布于 2015-03-19 11:58:25

尝试将messageId设置为header属性,

代码语言:javascript
运行
复制
 <header name="MessageId" value="0001" scope="transport"/>

并在outSequence中检索此标头。

代码语言:javascript
运行
复制
<property name="MessageId" expression="get-property('MessageId')"/>

我还没有对它进行测试,所以给出一个反馈,看看它是否有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29140384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档