建议:从我的服务并行调用另一个微服务



>我有一个要求如下

  • 根据特定条件进行数据库调用并获取结果列表
  • 对于列表中存在的每条记录,对微服务进行 GET API 调用
  • 整合微服务的所有结果并给出响应

我想使第二步平行。现在我根据数据知道列表中将不超过 15 条记录。所以我想为此使用执行器服务。

Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())

现在我不太有信心是否

  1. 使用ExecutorService是适合我的方案的最佳方法。或者我应该使用其他东西
  2. 我应该像Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())一样创建一个新的执行程序,还是让容器使用@Autowired注入托管执行程序

由于您有记录List,因此您可以使用parallelStream循环访问它。

List<SomeObject> objectList = resultFromDB();
objectList.parallelStream()
.map(obj -> makeApiCallInParallel(obj))
.collect(Collectors.toList());

parallelStream将并行执行 API 调用。并行调用的数量受 CPU 线程数的限制。

您可以使用 JVM 属性来增加它:

-Djava.util.concurrent.ForkJoinPool.common.parallelism=20

相关内容

  • 没有找到相关文章

最新更新