【发布时间】:2020-02-07 11:49:43
【问题描述】:
我有如下要求
- 根据特定条件进行数据库调用并获取结果列表
- 对于列表中的每条记录,对微服务进行 GET api 调用
- 整合微服务的所有结果并给出响应
我想让第二步平行。现在我根据数据知道列表中不会出现超过 15 条记录。所以我想到了为此使用 executorservice。
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())
现在我不是很自信
- 使用
ExecutorService是我的方案的最佳方法。或者我应该使用别的东西 - 我应该创建一个像
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())这样的新执行器还是让容器使用@Autowired注入一个托管执行器
【问题讨论】:
-
当你说'创建一个像...这样的新执行器'时,你的意思是inline,还是在某些类构造函数等?
ExecutorService无疑是并行处理此类事情的合理方式。一个(可能)更好的选择(如果可能的话)是修改微服务以能够处理这样的批处理查询(多部分或类似)并让 that 处理线程要求(然后改为两个服务中最多有 15 个线程来处理这个问题,只有其中一个需要它)。 -
@user2478398 我正在创建内联。在我将对另一个微服务进行服务调用的方法中
标签: java spring spring-boot executorservice executor