Я хочу, чтобы метод @Recover
был включен / выключен на основе флага в файле свойств. Как это сделать?
На самом деле я не использую аннотации (@Retryable
/ @Recover
), вместо этого я использую RetryTemplate
.
Решение
Я использую этот следующий метод в качестве метода-оболочки для всех вызовов восстановления.
private <T> T genericRecover(RetryContext context) {
if(this.useRecoverMethod) {
return null;
}
throw new RuntimeException(context.getLastThrowable());
}
Здесь логический флаг useRecoverMethod
читается из файла свойств.
public Resource<Camera> myRetyableMethod(Long cameraId) {
return retryTemplate.execute(context -> anApiCallMethod(param),
context -> genericRecover(context));
}