Я хочу использовать возвратные пружины для вызова 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.