본문 바로가기
JAVA

API call back off time(재요청 타시간)

by 아이티.파머 2019. 5. 7.
반응형

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("");
  }
반응형

'JAVA' 카테고리의 다른 글

병렬처리와 동시성  (0) 2019.05.27
CompletableFuture  (0) 2019.05.16
java throws bubble up 예제  (0) 2019.05.07
java 8 stream throw exception bubble up (예외사항 전파)  (0) 2019.05.07
linux java 설치 (cent os) update-alternatives  (0) 2019.03.31