구독자가 여러 가지 이유로 메시지를 처리하지 못할 수 있습니다. 예를 들어 구독자가 필요한 데이터를 가져오는 데 일시적인 문제가 발생하거나 예상치 못한 형식의 메시지를 수신할 수 있습니다.
Pub/Sub에서 메시지를 전달하려고 하지만 구독자가 확인할 수 없으면 Pub/Sub가 자동으로 메시지 재전송을 시도합니다. 이러한 재전송 시도를 구독 재시도 정책이라고 합니다. 이는 사용 설정하거나 중지할 수 있는 기능이 아닙니다. 하지만 사용할 재시도 정책 유형을 선택할 수는 있습니다.
시작하기 전에
- 구독 재시도 정책이 포함된 구독과 함께 사용할 주제를 만듭니다.
필요한 역할
주제와 구독을 관리하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Pub/Sub 편집자(roles/pubsub.editor
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 상세 설명은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
프로젝트 수준 및 개별 리소스 수준에서 액세스 제어를 구성할 수 있습니다. 한 프로젝트에서 구독을 만들고 이를 다른 프로젝트에 있는 주제에 연결할 수 있습니다. 각 프로젝트에 필요한 권한이 있는지 확인합니다.
재시도 정책 유형
구독을 처음 만들고 구성할 때 즉시 재전송 또는 지수 백오프 정책 중 하나를 사용하도록 선택할 수 있습니다. 기본적으로 구독은 즉시 재전송을 사용합니다.
즉시 재전송
기본적으로 Pub/Sub는 메시지를 (잠재적으로 동일한 구독자 클라이언트에) 재전송하려고 시도합니다. 하지만 메시지 확인을 방해하는 조건이 변경되지 않았다면 즉시 재전송으로 인해 문제가 발생할 수 있습니다. 이 경우 확인할 수 없는 여러 메시지를 Pub/Sub에서 재전송할 수 있습니다.
즉시 재전송 문제를 해결하기 위해 Pub/Sub에서 지수 백오프 정책을 구성할 수 있습니다.
지수 백오프
지수 백오프를 사용하면 재시도 사이에 점진적으로 좀 더 긴 지연 시간을 추가할 수 있습니다. 첫 번째 전송 실패 후 Pub/Sub는 최소 백오프 시간을 기다린 후 재시도합니다. 메시지가 연속해서 실패할 때마다 지연 시간에 더 많은 시간이 최대 지연 시간 (0~600초)까지 추가됩니다.
최대 및 최소 지연 시간 간격은 고정되어 있지 않으며 애플리케이션의 로컬 요인에 따라 이 시간 간격을 구성해야 합니다.
지수 백오프에 대한 다음 사항을 고려하세요.
- 지수 백오프는 다음과 같은 경우 트리거됩니다.
- 부정 확인이 수신되었습니다.
- 메시지 확인 기한이 만료되었습니다.
- 지수 백오프가 구독의 모든 메시지(전역)가 아닌 메시지별로만 적용됩니다.
- 지수 백오프를 사용하는 동안에는 (정렬된 메시지 전송을 사용하지 않는 한) 이전 메시지가 부정 확인을 수신했더라도 Pub/Sub에서 다른 메시지를 계속 전송합니다.
전송 후 일부 메시지를 처리할 수 없는 일시적인 불능 상태를 허용하려면 재시도 정책을 사용하여 일부 메시지의 전송 및 처리를 지연합니다. 이 기능은 최선의 노력을 다하는 기준(best-effort basis)에 따라 적용되며 재시도 정책에 대해 개별적으로 평가됩니다.
이 기능을 사용하여 메시지 전송을 의도적으로 지연시키는 것은 권장하지 않습니다. 재시도 정책으로 구성된 구독에서 많은 수의 메시지를 부정 확인(nack)할 경우 이러한 메시지 일부가 적은 백오프로 또는 백오프 없이 전송될 수 있습니다. 또한 대량의 메시지를 부정 확인하는 경우 Pub/Sub에서 모든 메시지의 전송 속도가 느려질 수 있습니다.
전송을 예약해야 하는 경우 Cloud Tasks를 사용하는 것이 좋습니다.
지수 백오프 구성
콘솔
새 구독을 만들 때 다음 단계를 수행하여 지수 백오프 재시도 정책을 구성할 수 있습니다.
- Google Cloud 콘솔에서 Pub/Sub 구독 페이지로 이동합니다.
구독 만들기를 클릭합니다.
구독 ID 필드에 이름을 입력합니다.
구독 이름 지정 방법은 주제 또는 구독 이름 지정 안내를 참고하세요.
- 드롭다운 메뉴에서 하나의 주제를 선택하거나 만듭니다.
구독은 주제에서 메시지를 수신합니다.
전송 유형을 선택합니다.
재시도 정책에서 지수 백오프 후 재시도를 선택합니다.
최소 백오프와 최대 백오프를 0~600초로 입력합니다.
기본값은 최소 백오프의 경우 10초, 최대 백오프의 경우 600초입니다.
- 만들기를 클릭합니다.
gcloud
지수 백오프 재시도 정책을 사용하여 새 구독을 만들려면 다음 gcloud pubsub create
명령어를 실행합니다.
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --min-retry-delay=MIN_RETRY_DELAY \ --max-retry-delay=MAX_RETRY_DELAY
다음을 바꿉니다.
SUBSCRIPTION_ID
: 구독의 고유 ID입니다.TOPIC_ID
: 구독을 연결할 주제의 ID입니다.MIN_RETRY_DELAY
: 구독의 최소 백오프 지연 시간입니다.MAX_RETRY_DELAY
: 정기 결제의 최대 백오프 지연 시간입니다.