【发布时间】:2021-09-25 17:25:46
【问题描述】:
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();
}
我正在使用这种方法,希望 executeCall 在抛出异常时至少重试 3 次。 executeCall(request) 方法返回一个 CompletionStage。
当我尝试对这段代码进行单元测试时,executeCall(request) 方法的调用次数只有一次(我在这个方法中抛出了一个异常)。
如何确保它至少重试 5 次(这是默认值)
【问题讨论】:
标签: java resilience4j completion-stage resilience4j-retry