스프링 부팅

스프링 웹 클라이언트로 429 RateLimit 오류 관리하기

저는 최근에 스프링 부팅 프로젝트입니다. 이 프로젝트에는 몇 가지 RateLimit 로그에서 앱이 원격 REST API에 연결할 때 오류가 발생했습니다. 이 앱도 동기식 차단을 사용하는 것으로 밝혀졌습니다. RestTemplate 클라이언트를 사용하여 API 호출을 수행할 수 있습니다. 웹 클라이언트는 내부적으로 Reactor API를 사용하고 있습니다.

Reactor와 일반적으로 반응형 API를 사용할 때 어떤 점이 좋은지 아시나요? 데이터 스트림으로 프로그래밍하는 것이 매우 쉬워진다는 것입니다. 또한 재시도 전략을 더 쉽게 구현할 수 있다는 뜻이기도 합니다.

먼저 로그의 오류에 대해 이야기해 보겠습니다. 제가 받은 내용은 다음과 같습니다:

평소와 마찬가지로 스택 추적에서 흥미로운 부분은 맨 위에 있습니다. 오류는 다음과 같습니다. 429 너무 많은 요청를 클릭하면 메시지에 1분 요금 제한. 이를 분해하면 HTTP 상태 반환된 코드는 429입니다.. 속도 제한 오류로, API가 호출자에게 너무 많은 요청을 보냈다고 알려주는 오류입니다. 일반적으로 잠시 기다리면 해결될 수 있으며, 심지어 재시도 후 헤더를 통해 얼마나 기다려야 하는지 알려줍니다.

Spring의 WebClient를 사용하여 해당 정보를 얻는 방법을 살펴보겠습니다:

이 코드는 GET 요청을 처리합니다. 웹클라이언트를 사용하면 요청의 응답을 살펴보고 적절하게 대응할 수 있습니다. onStatus 메서드를 호출합니다. 첫 번째 매개변수는 반환된 HTTP 상태 코드를 필터링하는 데 사용되는 부울입니다. 여기서는 상태 코드가 429이면 무언가를 수행합니다.

우리는 응답 헤더가 있는지 확인합니다. 재시도 후 헤더를 초기화하는 경우, 그렇다면 지연시간(초) 변수로 설정하고, 그렇지 않은 경우 기본값을 60으로 설정합니다. 그런 다음 응답 바디에 매핑된 RateLimitException. 본문 콘텐츠는 오류 메시지로 사용되며 지연 시간은 별도의 필드에서 사용할 수 있습니다. 자세한 내용은 예외 코드를 참조하세요:

따라서 이 특정 오류를 포착한 다음 주어진 기간 후에 다시 시도하는 것이 필요합니다. Reactor는 다음을 제공하여 이를 쉽게 만듭니다. 재시도 전략. 여러분이 해야 할 일은 다시 시도할 때 메서드를 사용합니다:

다양한 다시 시도 메서드를 사용할 수 있지만, 여기서는 withThrowable() 빌더. 이 빌더는 플럭스에 RateLimitException. 따라서 먼저 필터를 적용하여 이를 확인합니다. 그런 다음 해당 예외를 실제 재시도 개체에 매핑합니다. 여기에는 Retry.fixedDelay 전략을 사용하여 최대 시도 횟수와 기간을 매개 변수로 사용합니다. 지속 시간은 RateLimitException 를 던졌습니다.

이를 통해 요청이 429를 반환할 때마다 클라이언트는 재시도할 때까지 적절한 시간을 기다리게 됩니다. 그리고 Reactor를 사용하는 것이 시도/잡기 스프링의 RestTemplate. 리액티브 프로그래밍이 처음에는 조금 두렵게 느껴질 수 있지만 HTTP 요청 및 응답과 같은 데이터 스트림을 관리하거나 다음과 같이 리액티브 프로그래밍을 지원하는 데이터베이스에 대한 연결을 관리할 수 있는 좋은 방법입니다. 카우치베이스.

더 많은 도움과 아이디어가 필요하신가요?

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 로랑 도귄

Laurent는 파리에 사는 괴짜 금속공학도입니다. 주로 Java로 코드를 작성하고 AsciiDoc으로 구조화된 텍스트를 작성하며 데이터, 리액티브 프로그래밍 및 기타 유행어에 대해 자주 이야기합니다. 또한 Clever Cloud와 Nuxeo의 개발자 옹호자로 활동하며 해당 커뮤니티가 더 크고 강력하게 성장할 수 있도록 자신의 시간과 전문성을 바쳤습니다. 현재 Couchbase에서 개발자 관계를 운영하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.