Resilience4j重试的新实例还是从RetryRegistry检索?

问题描述

使用重试保护方法时,我应该每次创建一个新实例还是从RetryRegistry中重用同一实例?

我应该使用哪个?

A)

for(int i: mylist){
Retry retry = Retry.ofDefaults("backendName");
Mono.fromCallable(backendService::doSomething).transformDeferred(RetryOperator.of(retry))
}

B)

RetryRegistry retryRegistry = RetryRegistry.ofDefaults();
for(int i: mylist){
Retry retry = registry.retry("backendName");
Mono.fromCallable(backendService::doSomething).transformDeferred(RetryOperator.of(retry))
}

重试不是总是一个新实例来跟踪状态和尝试次数,还是幕后的注册表在调用它时返回一个新实例?

解决方法

您必须使用b)。 您一定不能为每个呼叫创建一个新的Retry实例。重试实例在内部为每个订阅创建一个新的重试上下文。 您甚至应该只在构造函数中执行一次查找。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...