Java를 사용하여 재시도 정책 구현
클라우드에서 실행되거나 원격 서비스 및 리소스와 통신하는 모든 애플리케이션은 일시적인 오류를 처리할 수 있어야 합니다. 이러한 애플리케이션에서는 네트워크 연결의 순간적인 손실, 서비스 또는 리소스가 사용 중일 때의 요청 시간 제한 또는 기타 요인으로 인해 오류가 발생하는 것이 일반적입니다. 개발자는 안정성과 복원력을 향상시키기 위해 일시적인 오류를 투명하게 처리하는 애플리케이션을 빌드해야 합니다.
이 문서에서는 Java용 Azure Storage 클라이언트 라이브러리를 사용하여 Azure Blob Storage에 연결하는 애플리케이션에 대한 재시도 정책을 구성하는 방법을 알아봅니다. 다시 시도 정책은 애플리케이션이 실패한 요청을 처리하는 방법을 정의하며, 항상 애플리케이션의 비즈니스 요구 사항 및 오류의 특성에 맞게 조정해야 합니다.
다시 시도 옵션 구성
Blob Storage에 대한 다시 시도 정책은 프로그래밍 방식으로 구성되어 다양한 서비스 요청 및 시나리오에 다시 시도 옵션이 적용되는 방식을 제어할 수 있습니다. 예를 들어 사용자 상호 작용을 기준으로 요청을 실행하는 웹앱은 다시 시도 횟수가 적고 지연이 짧은 정책을 구현하여 응답성을 높이고 오류가 발생할 때 사용자에게 알릴 수 있습니다. 또는 백그라운드에서 일괄 처리 요청을 실행하는 앱 또는 구성 요소는 다시 시도 횟수를 늘리고 지수 백오프 전략을 사용하여 요청 시간이 성공적으로 완료되도록 할 수 있습니다.
다음 표에는 RequestRetryOptions 인스턴스를 생성할 때 사용할 수 있는 매개 변수와 유형, 간략한 설명 및 기본값(변경하지 않은 경우)이 나와 있습니다. 앱의 요구 사항을 충족하기 위해 이러한 속성 값을 사전에 조정해야 합니다.
속성 | Type | 설명 | 기본값 |
---|---|---|---|
retryPolicyType |
RetryPolicyType | 선택 사항. 다시 시도 지연을 계산하는 데 사용하는 방법입니다. | 지수 |
maxTries |
정수 | 선택 사항. 포기하기 전 최대 재시도 횟수입니다. | 4 |
tryTimeoutInSeconds |
정수 | 선택 사항. 요청이 취소되고 실패한 것으로 간주되기 전에 허용되는 최대 시간입니다. 시간 제한은 전체 작업 종단 간이 아니라 작업 요청에 적용됩니다. 이 값은 호스트 컴퓨터에서 사용할 수 있는 대역폭과 저장소 서비스에 대한 근접성을 기반으로 해야 합니다. 예상 페이로드 크기 MB당 60초가 좋은 시작점이 될 수 있습니다. | Integer.MAX_VALUE(초) |
retryDelayInMs |
Long | 선택 사항. 작업을 다시 시도하기 전에 사용할 지연 시간을 지정합니다. | EXPONENTIAL의 경우 4ms, FIXED의 경우 30ms |
maxRetryDelayInMs |
Long | 선택 사항. 작업을 다시 시도하기 전에 허용되는 최대 지연 시간을 지정합니다. | 120밀리초 |
secondaryHost |
문자열 | 선택 사항. 요청을 다시 시도할 보조 스토리지 계정 엔드포인트. 이 값을 설정하기 전에 부실하고 잠재적으로 일관되지 않은 데이터 읽기와 관련된 문제를 이해해야 합니다. 자세한 내용은 지역 중복을 사용하여 고가용성 애플리케이션 설계를 참조하세요. | None |
다음 코드 예제에서는 RequestRetryOptions 인스턴스에서 다시 시도 옵션을 구성하고 BlobServiceClientBuilder
에 전달하여 클라이언트 개체를 만듭니다.
RequestRetryOptions retryOptions = new RequestRetryOptions(RetryPolicyType.FIXED, 2, 3, 1000L, 1500L, null);
BlobServiceClient client = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(credential)
.retryOptions(retryOptions)
.buildClient();
이 예제에서 BlobServiceClient
개체에서 발급된 각 서비스 요청은 RequestRetryOptions
인스턴스에 정의된 대로 다시 시도 옵션을 사용합니다. 이 정책은 클라이언트 요청에 적용됩니다. 앱의 요구 사항에 따라 서비스 클라이언트에 대한 다양한 다시 시도 전략을 구성할 수 있습니다.
다음 단계
- 이 문서는 Java용 Blob Storage 개발자 가이드의 일부입니다. 앱 빌드에서 개발자 가이드 문서의 전체 목록을 참조하세요.
- 다시 시도 정책에 대한 아키텍처 지침 및 일반적인 모범 사례는 일시적인 오류 처리를 참조하세요.
- 일시적인 오류에 대한 다시 시도 패턴을 구현하는 방법에 대한 지침은 다시 시도 패턴을 참조하세요.