繁体   English   中英

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

[英]Suggestion : Making parallel call from my service to another micro service

我有一个要求如下

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

我想让第二步平行。 现在我根据数据知道列表中不会出现超过 15 条记录。 所以我想为此使用 executorservice 。

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

现在我不是很自信

  1. 使用ExecutorService是我的场景的最佳方法。 或者我应该用别的东西
  2. 我应该创建一个像Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())这样的新执行Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())还是让容器使用@Autowired注入一个托管的 Executor

由于您有一个记录List ,您可以使用parallelStream遍历它。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM