我知道有很多方法可以GET
从遥控器获取数据。我尝试过这些不同的类型:
使用curl
内的Runtime.getRuntime().exec(...)
或new ProcessBuilder(...).start()
;
使用库作为URL
或RestTemplate
;
在使用其中之一之前,我们应该考虑它们之间是否存在一些显着差异?
为什么我会问这个看似主题过于宽泛或基于意见的问题?
我遇到使用问题,ProcessorBuilder
在高并发系统中,会有一些TimeOut
同时使用RestTemplate
,有没有?
在挖掘和调试之后,我没有发现与结果完全相关的内容,我问了这个问题以了解我可能忽略了什么。
List<CompletableFuture<GrafanaDashboard>> futureList = dbList.stream()
.map(boardName -> CompletableFuture.supplyAsync(() -> GrafanaRetriever
.parseDashboard(apiUrl, tokenString, boardName), Executors.newCachedThreadPool()))
.collect(Collectors.toList());
for (CompletableFuture<GrafanaDashboard> completableFuture : futureList) {
try {
dashboards.add(completableFuture.get(30, TimeUnit.SECONDS));
// using ProcessorBuilder, it will hang here and some might time out (not all just some)
// using RestTemplate, it will not wait almost, just smooth and no time out at all;
} catch (ExecutionException | InterruptedException | TimeoutException e) {
log.warn("Retrieving data from grafana failed due to TimeOut most likely by {}", apiUrl);
e.printStackTrace();
}
}
紫衣仙女
四季花海
相关分类