2016-04-22 9 views
0

2つのWebサービスを私の場合WSo2のESBでcomunicateしたいのですが、私はエンドポイントとプロキシサービスを設定する必要がありますが、解決できません。ESB(WSO2)で2つのWebサービスをどのようにcomunicateするのですか?

どのようなアイデア?、任意のチュートリアルですか?

+0

サービスオーケストレーションを参照していますか?例:1つのWebサービスから入力を受け取り、2つ目のWebサービスに送信しますか? – ycr

+0

まったく!!!!!!! –

答えて

2

まず、ESBでプロキシサービスとAPIを選択する必要があります。プロキシサービスはSOAPエンドポイントを提供し、APIはRESTfulエンドポイントを提供します。

これまでに選択したものは、残りはすべて同じです。プロキシサービスまたはAPIを呼び出すとトリガされるinSequenceが存在します。 inSequenceでは、メディエータのセットをミックスして一致させ、必要に合わせて調整する必要があります。メディエーターは、統合フローの作業単位です。 PayloadFactoryメディエーターを使用して新しいペイロードを作成し、それの外にいくつかの値を取り、あなたが入ってくるメッセージを取る

  1. 例えば、サービス連鎖のシナリオは次のような何かを行くことができます。

  2. コールメディエータを使用して最初のバックエンドを呼び出します。
  3. 次に、これから応答を取り出し、PaylaodFactoryメディエータを使用して新しいペイロードを再度作成します。
  4. もう一度Call mediatorを使用して2番目のバックエンドに電話をかけます。
  5. 最後に、応答メディエータを使用してクライアントに返信します。

下記の手順をご覧ください。これをプロキシまたはAPIにドロップできます。

<inSequence> 
    <log level="custom"> 
     <property name="Lets log the incoming payload" expression="$body"/> 
    </log> 

    <!-- Payload for first backend --> 
    <payloadFactory media-type="json"> 
     <format> 
     "payload":{ 
      "name":"StackOverflow", 
      "value":"SO" 
      } 
     </format> 
    </payloadFactory> 

    <!-- Invoke backend 1 --> 
    <call> 
     <endpoint> 
      <http uri="http://backend1/jsonEndpoint" method="post"/> 
     </endpoint> 
    </call> 

    <!-- At this point we have the response from backend1 in the message context --> 
    <log level="custom"> 
     <property name="Lets log the payload from backend1" expression="$body"/> 
    </log> 

    <!-- Payload for second backend. We are using JSONPath to access a value from backend1's payload here --> 
    <payloadFactory media-type="json"> 
     <format> 
     "payload":{ 
      "name":"StackOverflow", 
      "value":"SO", 
      "id": $1 
      } 
     </format> 
     <args> 
     <arg expression="$.response.from.backend1.id"/> 
     </args> 
    </payloadFactory> 

    <!-- Invoke backend 2 --> 
    <call> 
     <endpoint> 
      <http uri="http://backend2/endpoint" method="post"/> 
     </endpoint> 
    </call> 

    <!-- At this point we have the response from backend2 in the message context --> 
    <log level="custom"> 
     <property name="Lets log the payload from backend2" expression="$body"/> 
    </log> 

    <!-- Respond back to client --> 
    <respond/> 
</inSequence> 

私は上記のシーケンスをテストしていませんが、かなり正確でなければなりません。まずは、上記で使用したすべてのドキュメントを紹介します。

関連する問題