JAVA
API call back off time(재요청 타시간)
아이티.파머
2019. 5. 7. 16:49
반응형
back off 알고리즘
통신할때 충돌이 일어난 경우 일정시간동안 기다린후 다시 호출 하는 방식
/**
* API 실행 실패에 대한 재시도 정책 적용
* Backoff Time = 재시도 횟수 * 3 SEC , 최대 3회
*
* @param apiRequest
* @return
* @throws Exception
*/
private String apiCall(APIRequest apiRequest) throws Exception {
int tryCount = 0;
boolean isSuccess = false;
String responseData = null;
do {
try {
tryCount++;
responseData = apiRequest.executeBlock(String.class);
isSuccess = true;
} catch (Exception e) {
log.error("API CALL ERROR , retry api call count = {}", tryCount , e);
if (e instanceof ConnectTimeoutException || e instanceof ConnectException || e instanceof ResponseStatusException) {
try {
if (tryCount >= 3) {
throw e;
}
TimeUnit.SECONDS.sleep(3 * tryCount);
} catch (InterruptedException e1) {
log.error("재시도 타임 아웃 대기 오류 ", e1);
}
} else {
TimeUnit.SECONDS.sleep(3);
if (tryCount >= 2) {
throw e;
}
}
}
} while (!isSuccess);
return Optional.of(responseData).orElse("");
}
반응형