WSO2 ESB 5 中序列的并行执行
Parellel Execution of Sequences in WSO2 ESB 5
在我的应用程序中,我使用了一些调解器(md-1、2、3、4 和 md-a、b、c),例如(调用、脚本、有效负载工厂、数据映射器、迭代器、开关、丰富等)来完成一项任务。目前 mediator md-a,b,c 依次在 mediator md-1,2,3,4 之后运行。由 md-c 编辑的有效载荷 return 丰富了由 md-4 编辑的有效载荷 return。
但是为了提高性能,我计划按照下面提到的方式实现 md-a、b、c。因此,在 md-4 之后,它应该等到 md-c 完成并且 returns 有效负载。然后它将丰富由 md-4 编辑的有效载荷 return,如下所述。
所以,我的基本问题是
- 如何触发并执行parrel序列?
- 如何等待它完成?
- 如何通过它获取payloadreturn?
我不想要详细的答案。任何提示都会很有价值。
- ESB 版本:WSO2 5.0.0
如何触发并执行parrel序列?
- 对 2 个目标使用克隆中介
如何等待完成?
- a 每个目标序列的末尾,调用一个使用聚合中介的序列
如何通过它获取payloadreturn?
- 当聚合中介让您进入内部时 "onComplete",您可以访问所有有效载荷
对于这种情况,您可以将克隆调解器与聚合调解器结合使用。请检查我的解决方案。
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="PX_ParallelTest"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http,https">
<target>
<inSequence>
<clone>
<target>
<sequence>
<payloadFactory media-type="xml">
<format>
<Result1 xmlns="">
<resultCode>OK</resultCode>
</Result1>
</format>
<args/>
</payloadFactory>
<loopback/>
</sequence>
</target>
<target>
<sequence>
<payloadFactory media-type="xml">
<format>
<Result2 xmlns="">
<resultCode>OK</resultCode>
</Result2>
</format>
<args/>
</payloadFactory>
<loopback/>
</sequence>
</target>
</clone>
</inSequence>
<outSequence>
<property name="Result" scope="default">
<Result xmlns=""/>
</property>
<aggregate>
<completeCondition>
<messageCount max="-1" min="-1"/>
</completeCondition>
<onComplete enclosingElementProperty="Result" expression="$body/*[1]">
<enrich>
<source clone="true" xpath="$body/*[1]"/>
<target type="body"/>
</enrich>
<send/>
</onComplete>
</aggregate>
</outSequence>
</target>
<description/>
</proxy>
现在您可以看到此实现的响应。
<Result>
<Result1>
<resultCode>OK</resultCode>
</Result1>
<Result2>
<resultCode>OK</resultCode>
</Result2>
</Result>
在我的应用程序中,我使用了一些调解器(md-1、2、3、4 和 md-a、b、c),例如(调用、脚本、有效负载工厂、数据映射器、迭代器、开关、丰富等)来完成一项任务。目前 mediator md-a,b,c 依次在 mediator md-1,2,3,4 之后运行。由 md-c 编辑的有效载荷 return 丰富了由 md-4 编辑的有效载荷 return。
但是为了提高性能,我计划按照下面提到的方式实现 md-a、b、c。因此,在 md-4 之后,它应该等到 md-c 完成并且 returns 有效负载。然后它将丰富由 md-4 编辑的有效载荷 return,如下所述。
所以,我的基本问题是
- 如何触发并执行parrel序列?
- 如何等待它完成?
- 如何通过它获取payloadreturn?
我不想要详细的答案。任何提示都会很有价值。
- ESB 版本:WSO2 5.0.0
如何触发并执行parrel序列?
- 对 2 个目标使用克隆中介
如何等待完成?
- a 每个目标序列的末尾,调用一个使用聚合中介的序列
如何通过它获取payloadreturn?
- 当聚合中介让您进入内部时 "onComplete",您可以访问所有有效载荷
对于这种情况,您可以将克隆调解器与聚合调解器结合使用。请检查我的解决方案。
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="PX_ParallelTest"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http,https">
<target>
<inSequence>
<clone>
<target>
<sequence>
<payloadFactory media-type="xml">
<format>
<Result1 xmlns="">
<resultCode>OK</resultCode>
</Result1>
</format>
<args/>
</payloadFactory>
<loopback/>
</sequence>
</target>
<target>
<sequence>
<payloadFactory media-type="xml">
<format>
<Result2 xmlns="">
<resultCode>OK</resultCode>
</Result2>
</format>
<args/>
</payloadFactory>
<loopback/>
</sequence>
</target>
</clone>
</inSequence>
<outSequence>
<property name="Result" scope="default">
<Result xmlns=""/>
</property>
<aggregate>
<completeCondition>
<messageCount max="-1" min="-1"/>
</completeCondition>
<onComplete enclosingElementProperty="Result" expression="$body/*[1]">
<enrich>
<source clone="true" xpath="$body/*[1]"/>
<target type="body"/>
</enrich>
<send/>
</onComplete>
</aggregate>
</outSequence>
</target>
<description/>
</proxy>
现在您可以看到此实现的响应。
<Result>
<Result1>
<resultCode>OK</resultCode>
</Result1>
<Result2>
<resultCode>OK</resultCode>
</Result2>
</Result>