Parellel在WSO2 ESB中执行序列5

时间:2017-03-02 15:07:41

标签: performance wso2 wso2esb

在我的应用程序中,我使用了许多调解器(md-1,2,3,4和md-a,b,c),如(调用,脚本,有效负载工厂,数据映射器,迭代器,开关,丰富等)做任务。目前mediartor md-a,b,c以顺序方式在介体md-1,2,3,4之后运行。并且md-c返回的有效负载丰富了md-4返回的有效负载。

但是为了提高性能,我打算如下所述实现md-a,b,c parrelly。因此,在md-4之后它应该等到md-c完成并返回有效负载。然后它将丰富md-4返回的有效负载,如下所述。

enter image description here

所以,我的基本问题是

  • 如何触发和执行parrel序列?
  • 如何等到它完成?
  • 如何通过它获得有效载荷返回?

我不想详细解答。任何暗示都值得一试。

  • ESB版本:WSO2 5.0.0

2 个答案:

答案 0 :(得分:4)

对于此方案,您可以将克隆介体与聚合介体组合使用。请检查我的解决方案。

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

答案 1 :(得分:2)

如何触发和执行parrel序列?

  • 使用具有2个目标的克隆介体

如何等到它完成?

  • 每个目标序列的结尾,调用使用聚合介体的序列

如何通过它获得有效载荷返回?

  • 当聚合调解员让您进入内部&#34; onComplete&#34;时,您可以访问所有有效负载