我必须为 WSO2 ESB 中的代理服务的序列设置一个 Hadoop 端点。我应该将 WS 响应传送到 Hadoop 文件存储库中。 以下是将文件写入 Hadoop 的 PUT 命令的语法: 2-step commands for file-writing
如何实现在 Hadoop 上保存 WS 响应的后续执行这 2 个步骤的工作代理?
最佳答案
首先,在 inSequence 中,您可以调用调解器来请求 url。
<call>
<endpoint>
<address uri="http://localhost:9000/services/YourService"/>
</endpoint>
</call>
接下来,您可以从上述响应中提取 header 并将其设置为下一个请求的“To” header 。 然后使用发送或调用中介通过“默认”端点发送内容(默认端点通过查看“To” header 将消息发送到正确的地址)。
<header name="To"
scope="transport"
expression="get-property('redirectUri')"/>
this page describes 中的示例 5如何使用默认(动态)端点。
更新:
由于您需要调用外部 REST 服务并将其保存到 hadoop,因此基本流程如下所示:
首先你制作一个
<call>
到 hadoop 端点并获取 url 以保存数据。从上面的响应中,提取 header 并将其保存到属性中。
<property name"redirectUri" expression="get-property('hadoop_response_header_name')" scope="transport"/>
接下来您可以再次使用调用调解器调用其余服务。在调用它之前,您可能必须使用 Payload Factory 中介构建一个 json 有效负载。还要确保在此处声明端点时,将正确的格式添加为“rest”(阅读有关地址端点的内容)。
当您收到来自其余服务的响应时,您可以再次使用负载工厂对收到的响应进行任何必要的修改,以构建格式正确的请求来调用 hadoop 端点。
最后,您可以将请求发送到 hadoop 端点。在此处调用发送中介之前,您需要设置“To” header (使用之前提取的属性“redirectUri”)并使用默认端点。
您需要阅读一些关于端点、有效负载工厂中介、调用中介、属性中介和 header 中介的内容才能使其正常工作。
关于web-services - 在 WSO2 ESB 后序代理服务中配置 Hadoop 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33282485/