gpt4 book ai didi

java - Failsafe RetryPolicy - 从 SupplyAsync 抛出异常

转载 作者:行者123 更新时间:2023-12-02 01:47:03 25 4
gpt4 key购买 nike

我正在实现重试政策。基本上我想做的是在单独的线程上重试 POST 请求。我正在使用 Failsafe ( https://failsafe.dev/async-execution/#async-integration ) 这是我的代码

Failsafe.with(retryPolicy).with(executor).future(() -> CompletableFuture.supplyAsync(() -> {
try {
CloseableHttpResponse response = client.execute(httpPost);
httpPost.releaseConnection();
client.close();
return response;
} catch (IOException e) {
return null;
}
}).thenApplyAsync(response -> "Response: " + response)
.thenAccept(System.out::println));

我不想在这里捕获 IOException。它由重试策略处理。目前重试不会发生,因为我在这里捕获了异常。有没有办法从“supplyAsync”抛出异常,以便重试策略处理该异常?谢谢。谢谢

最佳答案

CompletionStage API 提供了几种不同的方式来处理和处理未经检查的异常。但在你的情况下,你得到的是一个已检查的异常,你运气不好。你要么必须处理它,要么将它扔向调用者。如果您更喜欢后一种方法,这里有一种方法。

Failsafe.with(retryPolicy).with(executor).future(() -> CompletableFuture.supplyAsync(() -> {
try {
// Remainder omitted
return response;
} catch (IOException e) {
throw new CompletionException(e);
}
}).thenApplyAsync(response -> "Response: " + response)
.thenAccept(System.out::println));

关于java - Failsafe RetryPolicy - 从 SupplyAsync 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53580754/

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