如何通过 ESB (WSO2) 通信两个 Web 服务



我想在我的WSo2中通过ESB传达两个Web服务,为此我必须设置和端点以及代理服务,但我无法解决它。

任何想法?,任何教程?

首先,您应该在 ESB 中的代理服务和 API 之间进行选择。代理服务将为您提供要使用的 SOAP 端点,API 将为您提供 RESTful 端点。

但无论你选择哪一个,其余的都是一样的。当您调用代理服务或 API 时,将触发一个 inSequence。在您的 inSequence 中,您必须混合和匹配一组中介器,并根据您的需求对其进行定制。中介器是集成流中的一个工作单元。

例如,服务链方案可以如下所示:

  1. 您获取传入消息,从中获取一些值,然后使用 PayloadFactory 中介器创建新的有效负载。
  2. 使用呼叫调解器调用第一个后端。
  3. 然后,您从中获取响应,并使用PaylaodFactory调解器再次创建新的有效负载。
  4. 再次使用呼叫中介程序调用第二个后端。
  5. 最后,使用响应中介器响应客户端。

看看下面的inSequence,它执行上述步骤。您可以将其放入代理或 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>

我还没有测试上面的顺序,但它应该相当准确。为了帮助您入门,以下是我们上面使用的所有内容的文档。

  • API:https://docs.wso2.com/display/ESB490/Creating+APIs
  • 代理服务:https://docs.wso2.com/display/ESB490/Adding+a+Proxy+Service
  • 有效载荷工厂调解员:https://docs.wso2.com/display/ESB490/PayloadFactory+Mediator
  • 呼叫调解员:https://docs.wso2.com/display/ESB490/Call+Mediator
  • 日志调解器:https://docs.wso2.com/display/ESB490/Log+Mediator
  • 响应调解员:https://docs.wso2.com/display/ESB490/Respond+Mediator
  • JsonPath: https://docs.wso2.com/display/ESB490/JSON+Support#JSONSupport-AccessingcontentfromJSONpayloads

最新更新