【发布时间】:2016-10-26 20:47:08
【问题描述】:
我有一个 RESTful api 我正在尝试使用 talend 为了获取数据,需要 2 次 api 调用,首先为您的报告生成一个 ID,然后您使用该 ID 进行连续的 api 调用以获取数据结果
问题是如果第二个 api 调用中请求的报告尚未完成,它将返回
[{data:{string:"Requested report ### has not finished processing yet, please try again later"}}]
所以,我将 tJava 放入线程 (5000) 以错开第二个 api 调用 (tRestClient1) 和第一个 api 调用 (tRestClient2),但我可以预见这是一个问题
我要做的是评估第二个 tRest 请求结果(tFileOutputJSON_3),如果它等于“请求的报告...”,则重新排队第二个 tRest 请求,直到数据准备好
这是我的工作截图
【问题讨论】:
-
从您的 tJavaRow_1 您可以使用 tLoop 启动一个 while 循环并设置一个全局变量来说明您是否应该继续循环,首先您应该将其设置为条件 while 循环继续,然后您转到 tRestClient_1 并获取值并解析 tFileoutputJSON_3 并根据响应将此全局变量的此值设置为继续 while 循环或退出它。你甚至可能想添加一个 tSleep 来增加延迟
-
我猜你修改了截图的工作流程,但如果不是这种情况,你应该阅读 this good practices guide 特别是 Canvas Workflow & Layout 部分。
-
@JulienBreuil 我确实修改了,但非常感谢该链接