Использование Spring Retry для повторных попыток - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу использовать возвратные пружины для вызова API для какой-либо службы.Это мой текущий код:

@Retryable(value = {RuntimeException.class}, maxAttempts = 4, backoff = @Backoff(random = true, multiplier = 2, value = 30000))
public void requestSomeService(RequestData request) {
        status = updateStatus(request, "REQUESTED");
        Call<BaseResponse> transaction = serviceApi.addTransaction(request);
        try {
            Response<BaseResponse> execute = transaction.execute();
            if (execute.isSuccessful()) {
                updateTxStatus(request, "SUCCESS");
                return;
            }
            else{
                throw new RuntimeException();
            }
        } catch (Exception e) {
            retryAddingTransaction(request);
        }
      throw new RuntimeException(e);

    }

Также, когда после всех повторных попыток я хочу обновить статус транзакции как неудачной. Я знаю, что это можно сделать в функции с аннотацией @Recover.

@Recover
    public void updateTransactionFailedStatus(RequestData request){
        updateTxStatus(request,"FAILED");
    }

Я не уверен, что это правильный способ сделать это, поскольку API повторяется много раз (бесконечно).Также кто-то может проверить, как будет работать функция восстановления, так как мне нужно передать в нее requestData.

...