0

複数のエンドポイントを呼び出すシーケンスがあります。私のシーケンスは次のとおりです。

<sequence xmlns="http://ws.apache.org/ns/synapse" name="GetAllData">
   <switch xmlns:ns="http://org.apache.synapse/xsd" xmlns:cct="http://www.tempuri.org" xmlns:tns="http://www.tempuri.org" source="//tns:IDFilter/cct:ID">
      <case regex=".?">
         <log level="custom">
            <property name="Property2" value="----------------Inside switch 1 ? ---------------"/>
         </log>
         <filter xpath="//tns:ChildIDFilter/cct:ID='?'">
            <then>
               <log level="custom">
                  <property name="prop1" value="------Inside Then------------------"/>
               </log>
               **<payloadFactory>
                  <format>
                     <select_all_ID_operation xmlns:cir="http://tempuri.org"/>
                  </format>
               </payloadFactory>
               <payloadFactory>
                  <format>
                     <select_all_ChildID_operation xmlns="http://tempuri.org"/>
                  </format>
               </payloadFactory>
               <send>
                  <endpoint key="ID_Service_EPS"/>
               </send>**
            </then>
            <else>
               <log level="custom">
                  <property name="prop2" value="------Inside Else------------------"/>
               </log>
               <payloadFactory>
                  <format>
                     <select_all_ID_operation xmlns="http://tempuri.org"/>
                  </format>
               </payloadFactory>
               <send receive="ValidateAllData">
                  <endpoint key="ID_Endpoint"/>
               </send>
            </else>
         </filter>
      </case>
   </switch>
</sequence>

現在、ID_EPS エンドポイントには 2 つの wsdl エンドポイントがあり、両方の wsdl からデータを取得するためにペイロードを渡す必要がありますが、これは発生していません。私の質問は、異なる wsdl エンドポイントを含む受信者エンドポイントを呼び出し、そのペイロードを設定して、最終的に連結された結果を取得する方法です。回答をお待ちしております。よろしくお願いします

4

2 に答える 2

0

管理コンソール --> エンドポイント メニューで、両方のエンドポイントを提供する受信者リスト エンドポイントを見つけ、シーケンスからその受信者エンドポイントを参照できます。

于 2013-05-17T16:02:30.980 に答える
0

受信者リスト エンドポイントを使用して 2 つのエンドポイント (この場合は 2 つの wsdl エンドポイント) にメッセージを送信するには、両方のエンドポイントで受け入れられるメッセージ形式が同一である必要があります。

その場合、受信者リスト エンドポイントを使用して両方のエンドポイントにメッセージを送信し、応答メッセージを集約して、連結された結果を構築できます。受信者リスト エンドポイントのサンプル構成を見つけるには、次のリソースを参照してください。

http://docs.wso2.org/wiki/display/ESB460/Sample+62%3A+Routing+a+Message+to+a+Dynamic+List+of+Recipients+and+Aggregating+Responses

2 つのエンドポイント メッセージ形式が同一でない場合は、サービス チェーン シナリオを実装するか、メッセージを複製して 2 つのエンドポイントに対して 2 つの異なるブランチを作成し、各サービス エンドポイントに必要なペイロードを構築して、そのブランチ内のサービス エンドポイントに送信する必要があります。次に、両方のブランチから受け取った応答を集約し、連結された結果を構築できます。

于 2013-05-19T07:35:24.100 に答える