第一次 API 调用返回 18000 条记录, 每个 18000 条记录都是另一个 API 调用,他们可以在每个 5-200 的范围内给出响应。必须调用这 200 个中的每一个,并且必须将响应保存在 DB
中您似乎有一些想要以非阻塞方式实现的场景,不确定是否有帮助,但我尝试使用这种方法 -
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
System.out.println("Program start :: " + System.currentTimeMillis());
Stream<String> first1800Stream = Stream.of("first api 1", "first api 2"); // user your http client to get API.
first1800Stream.forEach(rec-> {
cachedThreadPool.submit(() -> {
Stream<String> next200Data = Stream.of(rec + "next200 1", rec + "next200 2"); //user your http client to get API.
next200Data.forEach(nextrec -> {
cachedThreadPool.submit(() -> System.out.println("Persist in db" + nextrec)); // make your DB call
});
});
});
cachedThreadPool.awaitTermination(5000,TimeUnit.MILLISECONDS);
cachedThreadPool.shutdown();
}