Resilience4j 新实例重试或从 RetryRegistry 检索?
Resilience4j new instance of Retry or retrieve from RetryRegistry?
当使用 Retry 保护方法时,我应该每次都创建一个新实例还是从 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))
}
重试不应该总是一个新实例来跟踪状态和尝试次数,或者当我们调用它时,后台的注册表returns是一个新实例吗?
您必须使用 b)。
您不得为每次调用创建新的重试实例。 Retry 实例在内部为每个订阅创建一个新的 Retry 上下文。
您甚至应该在构造函数中只进行一次查找。
当使用 Retry 保护方法时,我应该每次都创建一个新实例还是从 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))
}
重试不应该总是一个新实例来跟踪状态和尝试次数,或者当我们调用它时,后台的注册表returns是一个新实例吗?
您必须使用 b)。 您不得为每次调用创建新的重试实例。 Retry 实例在内部为每个订阅创建一个新的 Retry 上下文。 您甚至应该在构造函数中只进行一次查找。