簡體   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