#resilience4j
#resilience4j
Вопрос:
При защите метода с помощью Retry должен ли я каждый раз создавать новый экземпляр или повторно использовать один и тот же экземпляр из RetryRegistry?
Какой из них я должен использовать?
А)
for(int i: mylist){
Retry retry = Retry.ofDefaults("backendName");
Mono.fromCallable(backendService::doSomething).transformDeferred(RetryOperator.of(retry))
}
или
Б)
RetryRegistry retryRegistry = RetryRegistry.ofDefaults();
for(int i: mylist){
Retry retry = registry.retry("backendName");
Mono.fromCallable(backendService::doSomething).transformDeferred(RetryOperator.of(retry))
}
Разве повторная попытка не должна всегда быть новым экземпляром, чтобы отслеживать состояния и количество попыток, или реестр за сценой возвращает новый экземпляр, когда мы его вызываем?
Ответ №1:
Вы должны использовать b). Вы не должны создавать новую повторную попытку для каждого вызова. Экземпляр повторной попытки внутренне создает новый контекст повторной попытки для каждой подписки. Вы должны даже выполнить поиск только один раз в своем конструкторе.