【发布时间】:2019-03-23 08:57:42
【问题描述】:
我必须通过调用返回 List 的 rest API 从某处转储数据。
首先我必须从一个 rest api 中获取一些 List 对象。现在使用并行流并使用 forEach 遍历每个项目。
现在,对于每个元素,我必须调用其他一些 api 来获取再次返回列表的数据,并通过调用另一个 rest api 保存相同的列表。
步骤 1 的 6000 条记录大约需要 1 小时。
我尝试如下:
restApiMethodWhichReturns6000Records
.parallelStream().forEach(id ->{
anotherMethodWhichgetsSomeDataAndPostsToOtherRestCall(id);
});
public void anotherMethodWhichgetsSomeDataAndPostsToOtherRestCall(String id) {
sestApiToPostData(url,methodThatGetsListOfData(id));
}
【问题讨论】:
-
这与列表的性能无关。它与 REST 服务或您的网络或两者的速度有关。
-
看起来你按顺序调用了其他的rest api,而不是同时调用。
-
@AlexeiKaigorodov 你能改进上面的代码块吗?我在上面使用了并行流。我哪里写错了?
-
@Pavan 请提供方法 sestApiToPostData 和 methodThatGetsListOfData 的代码。它们必须是非阻塞的。
标签: java multithreading parallel-processing stream java-stream