我想在我的WSo2中通过ESB传达两个Web服务,为此我必须设置和端点以及代理服务,但我无法解决它。
任何想法?,任何教程?
首先,您应该在 ESB 中的代理服务和 API 之间进行选择。代理服务将为您提供要使用的 SOAP 端点,API 将为您提供 RESTful 端点。
但无论你选择哪一个,其余的都是一样的。当您调用代理服务或 API 时,将触发一个 inSequence。在您的 inSequence 中,您必须混合和匹配一组中介器,并根据您的需求对其进行定制。中介器是集成流中的一个工作单元。
例如,服务链方案可以如下所示:
- 您获取传入消息,从中获取一些值,然后使用 PayloadFactory 中介器创建新的有效负载。
- 使用呼叫调解器调用第一个后端。
- 然后,您从中获取响应,并使用PaylaodFactory调解器再次创建新的有效负载。
- 再次使用呼叫中介程序调用第二个后端。
- 最后,使用响应中介器响应客户端。
看看下面的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