Как включить и выключить метод @Recover в Spring Retry? - PullRequest
0 голосов
/ 11 января 2019

Я хочу, чтобы метод @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));
}

1 Ответ

0 голосов
/ 11 января 2019

Это невозможно.

Но, конечно, ваш метод @Recover может повторно генерировать исключение (или нет) на основе свойства.

...