gpt4 book ai didi

java - 如何使用 CompletableFuture 异步发送多个请求并返回成功?

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:17 25 4
gpt4 key购买 nike

假设我有 5 个请求,并且我想并行发送所有 5 个请求。我可以使用 CompletableFuture.allOf(); 来做到这一点然而,allOf() 仅在所有 future 都成功时才返回,即使有一个失败也会失败。如何从 n 个成功的 future 中获取 x,并忽略失败的 future,同时仍然并行发送请求?

我尝试采取的步骤:

1. Send 5 messages in parallel
2. After 10 second timeout, return all successful messages even if any failed

.

最佳答案

您可以单独捕获异常并在这些异常情况下返回 null:

private CompletableFuture<GreetHolder> getGreeting(String lang) {
return CompletableFuture.supplyAsync( () -> {
try {
log.info("Task execution started.");
Thread.sleep(2000);
log.info("Task execution stopped.");
} catch (InterruptedException e) {
e.printStackTrace();
}
return new GreetHolder(getGreet(lang));
}, executor).exceptionally( ex -> {
log.error("Something went wrong : ", ex);
return null;
});
}

CompletableFuture<Void> allFutures = CompletableFuture.allOf(getGreeting("en"), getGreeting("es"));

有关更多信息,请访问此页面:https://medium.com/@senanayake.kalpa/fantastic-completablefuture-allof-and-how-to-handle-errors-27e8a97144a0

关于java - 如何使用 CompletableFuture 异步发送多个请求并返回成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52881288/

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