我希望在我的案例WSo2中通过ESB来管理两个Web服务,因为我必须设置端点和代理服务,但我无法解决它。
任何想法?,任何教程?
答案 0 :(得分:2)
首先,您应该在ESB中的代理服务和API之间进行选择。代理服务将为您提供SOAP端点,API将为您提供RESTful端点。
但是你选择了哪一个,其余的都是一样的。当您调用代理服务或API时,将会触发一个inSequence。在你的inSequence中,你必须混合和匹配一组调解员,并根据你的需要量身定制。中介是整合流程中的一个工作单元。
例如,服务链场景可能类似于:
看看下面的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>
我没有测试过上面的序列,但它应该相当准确。为了帮助您入门,以下是我们上面使用的所有文档。