private CompletionStage<org.asynchttpclient.Response> executeWithRetries(Request request) {
RetryConfig retryConfig = RetryConfig.<org.asynchttpclient.Response>custom()
.maxAttempts(5)
.intervalFunction(IntervalFunction
.ofExponentialBackoff(TimeUnit.SECONDS.toMillis(2), 1.2))
.build();
Retry retry = Retry.of("proxy-retry" , retryConfig);
Supplier<CompletionStage<org.asynchttpclient.Response>> retryableSupplier = Retry.decorateCompletionStage(
retry , Executors.newScheduledThreadPool(10), () -> executeCall(request));
return retryableSupplier.get();
}
您可能在Supplier中抛出异常,而不是在Supplier.get()代码返回的future中抛出异常。我尝试了以下代码:
import java.util.concurrent.*;
import java.util.function.*;
import io.github.resilience4j.retry.*;
public class Main {
private static final ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(10);
public static void main(final String[] args) {
RetryConfig retryConfig = RetryConfig.custom()
.maxAttempts(5)
.intervalFunction(
IntervalFunction.ofExponentialBackoff(10, 1.2))
.build();
Retry retry = Retry.of("proxy-retry", retryConfig);
Supplier<CompletionStage<String>> supplier =
() -> CompletableFuture.supplyAsync(() -> {
System.out.println("failing code");
throw new RuntimeException();
});
retry.executeCompletionStage(scheduledExecutorService, supplier);
}
}
输出为:
failing code
failing code
failing code
failing code
failing code
不出所料!
如何配置spring以使用返回类型?考虑代码: 我得到了404,但我在日志中看到该方法被触发。如果我这样更改签名: 我看到成功的json阵列。 如何使与spring(4.2.RELEASE)配合使用? 更新 对于测试,我编写了以下方法: 而且很有效。面向对象 我测试了这个版本的future: 有点激动,但是。。。作品 所以我原来的方法有以下逻辑: 迭代集合 通过每个集合元素的AsyncRestTe
我有许多服务,每一个服务都调用许多不同的远程endpoint,使用一个基本服务,即service1->base_service->endpoint1,2,5,service2->base_service->endpoint2,3,5等等。基本服务使用Spring WebClient进行http调用。
目前,要用CompletionStage的集合做一些简单的事情,需要跨越几道丑陋的关卡: 我想写的是: 关于完成未来并转换为数组和连接的整个仪式都是样板文件,分散了对实际代码语义的注意力。 可能有一个版本的allOf()返回< code>Future 我可以自己尝试实现XXXUtil,但我想知道是否已经有一个成熟的3rdparty库来解决这个问题和类似的问题(例如Spotify的Completab
我在他们每一个都看到了一个例子,但我需要确切地知道在深层上有什么不同,因为有时我认为我可以用他们两个得到相同的结果,所以我想知道,以便我可以选择正确的? 使用它们每一个都有什么好处? 这两个例子都起作用: 此示例运行在中。
在构建API时,编写接口代码是一个很好的实践,因此返回CompletionStage似乎是一个最好的方法。然而,我意识到我碰巧总是在获得CompletionStage之后调用.ToCompletableFuture。在这种情况下,推荐的方法是什么?
在使用回调结构和Quarkus/Mutiny实现反应式REST GETendpoint并使用阻塞服务检查变量后,我最终使用CompletionStage/CompletableFuture API版本进行了播放; 如何从我的Reactive REST GETendpoint调用CompletionLevel/CompletableFuture API服务