gpt4 book ai didi

spring - 等待一些 Spring ListenableFuture

转载 作者:行者123 更新时间:2023-12-02 00:46:31 26 4
gpt4 key购买 nike

有一个服务使用 Spring AsyncRestTemplate 来发送 rest 调用。每次调用 AsyncRestTemplate.exchange() 都会返回 ListenableFuture。像这样:

    ListenableFuture future1 = new AsyncRestTemplate().exchange(...);
ListenableFuture future2 = new AsyncRestTemplate().exchange(...);
ListenableFuture future3 = new AsyncRestTemplate().exchange(...);

有没有一种方法可以创建结合所有其他调用的单个 ListenableFuture?类似于 Guava 的 Futures.allAsList

最佳答案

第 1 步:将每个 ListenableFuture 转换为 CompletableFuture

public CompletableFuture<T> toCompletableFuture(ListenableFuture<ResponseEntity<String>> listenableFuture) {
final CompletableFuture<T> completableFuture = new CompletableFuture<>();

listenableFuture.addCallback(new ListenableFutureCallback<ResponseEntity<String>>() {
@Override
public void onFailure(Throwable e) {
completableFuture.completeExceptionally(e);
}
}

@Override
public void onSuccess(ResponseEntity<String> result) {
completableFuture.complete(parseResponse(result));
}
}
});
return completableFuture;
}

第 2 步:调用 CompletableFuture.allOf(cF1, cF2, cF3...)

关于spring - 等待一些 Spring ListenableFuture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43345047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com