데드 레터 주제로 전달

데드 레터 주제(데드 레터 큐라고도 함)로 구독을 구성할 수 있습니다. 메시지를 확인할 수 없는 경우 Pub/Sub는 메시지를 데드 레터 주제로 전달할 수 있습니다. 데드 레터 주제는 나중에 액세스할 수 있도록 메시지를 저장합니다.

메시지를 데드 레터 주제로 전달하려면 다음 단계를 완료하세요.

  1. 주제 만들기
  2. 주제를 데드 레터 주제로 구독에 추가
  3. Pub/Sub를 허용하여 데드 레터 주제에 메시지를 게시하고 구독에서 전달된 메시지를 삭제합니다.

데드 레터 주제 추가

구독을 만들거나 업데이트할 때 데드 레터 주제를 구독에 추가할 수 있습니다. 데드 레터 주제를 설정한 경우 다음 옵션도 지정할 수 있습니다.

  • 최대 전송 시도 횟수 기본 전송 시도 횟수는 5회이며 5~100회 전송 시도 횟수를 지정할 수 있습니다.

  • 데드 레터 주제가 포함된 프로젝트 이 옵션은 데드 레터 주제가 구독과 다른 프로젝트에 있는 경우에 필요합니다.

Cloud Console 또는 gcloud 명령줄 도구를 사용하여 데드 레터 주제로 구독을 만들 수 있습니다.

Console

데드 레터 주제가 포함된 구독을 만들려면 다음 단계를 완료하세요.

  1. Cloud Console에서 구독 페이지로 이동합니다.

    구독 페이지로 이동

  2. 구독 만들기를 클릭합니다.

  3. 구독 ID를 입력합니다.

  4. 드롭다운 메뉴에서 하나의 주제를 선택하거나 만듭니다. 구독은 주제에서 메시지를 수신합니다.

  5. 데드 레터 처리 섹션에서 데드 레터 처리 사용을 선택합니다.

  6. 드롭다운 메뉴에서 데드 레터 주제를 선택하거나 만듭니다.

  7. 선택사항: 최대 전송 시도 횟수 필드에 5에서 100 사이의 정수를 지정합니다.

  8. 만들기를 클릭합니다.

gcloud

데드 레터 주제로 구독을 만들려면 gcloud pubsub subscriptions create 명령어를 실행합니다.

gcloud pubsub subscriptions create subscription-id \
  --topic=topic-id \
  --dead-letter-topic=dead-letter-topic-id \
  --max-delivery-attempts=max-delivery-attempts \
  [--dead-letter-topic-project=dead-letter-topic-project]

Cloud Console 또는 gcloud 명령줄 도구를 사용하여 데드 레터 주제로 구독을 업데이트할 수 있습니다.

Console

데드 레터 주제를 구독에 추가하려면 다음 단계를 완료하세요.

  1. Cloud Console에서 구독 페이지로 이동합니다.

    구독 페이지로 이동

  2. 업데이트할 구독 옆의 추가 작업을 클릭합니다.

  3. 컨텍스트 메뉴에서 수정을 선택합니다.

    수정 옵션이 강조표시된 컨텍스트 메뉴

  4. 데드 레터 처리 섹션에서 데드 레터 처리 사용을 선택합니다.

  5. 드롭다운 메뉴에서 데드 레터 주제를 선택하거나 만듭니다.

  6. 선택사항: 최대 전송 시도 횟수 필드에 5에서 100 사이의 정수를 지정합니다.

  7. 업데이트를 클릭합니다.

gcloud

데드 레터 주제로 구독을 업데이트하려면 gcloud pubsub subscriptions update 명령어를 실행합니다.

gcloud pubsub subscriptions update subscription-id \
  --dead-letter-topic=dead-letter-topic-id \
  [--max-delivery-attempts=max-delivery-attempts] \
  [--dead-letter-topic-project=dead-letter-topic-project]

전달 권한 부여

메시지를 데드 레터 주제로 전달하려면 Pub/Sub에 다음을 수행할 권한이 있어야 합니다.

Pub/Sub는 각 프로젝트의 서비스 계정을 만들고 유지합니다. service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com 이 서비스 계정에 게시자구독자 역할을 할당하여 전달 권한을 부여할 수 있습니다. Cloud Console을 사용하여 구독을 구성하면 역할이 자동으로 부여됩니다.

Pub/Sub에 게시자 역할 할당

Pub/Sub에 데드 레터 주제에 메시지를 게시할 수 있는 권한을 부여하려면 다음 명령어를 실행합니다.

PUBSUB_SERVICE_ACCOUNT="service-${project-number}@gcp-sa-pubsub.iam.gserviceaccount.com"

gcloud pubsub topics add-iam-policy-binding dead-letter-topic-id \
    --member="serviceAccount:$PUBSUB_SERVICE_ACCOUNT"\
    --role="roles/pubsub.publisher"

Pub/Sub에 구독자 역할 할당

Pub/Sub에 전달된 메시지를 확인하고 구독에서 삭제할 수 있는 권한을 부여하려면 다음 명령어를 실행합니다.

PUBSUB_SERVICE_ACCOUNT="service-${project-number}@gcp-sa-pubsub.iam.gserviceaccount.com"

gcloud pubsub subscriptions add-iam-policy-binding subscription-id \
    --member="serviceAccount:$PUBSUB_SERVICE_ACCOUNT"\
    --role="roles/pubsub.subscriber"

전송 시도 추적

구독에 데드 레터 주제를 추가하면 메시지에 delivery_attempt 필드가 포함됩니다. delivery_attempt 필드는 구독자에 대한 전송 시도 횟수를 계산합니다.

전달된 메시지 관리

메시지를 전달한 후 Pub/Sub 서비스는 데드 레터 주제가 있는 구독에서 전달된 메시지를 삭제합니다. Cloud Monitoring으로 전달된 메시지를 모니터링할 수 있습니다.

전달된 메시지는 메시지가 전달된 구독의 만료 정책이 아닌 데드 레터 주제에 대한 구독의 만료 정책을 준수합니다.

전달된 메시지 모니터링

데드 레터 주제가 있는 구독의 subscription/dead_letter_message_count 측정항목은 데드 레터 주제로 전달된 메시지 수를 기록합니다.

자세한 내용은 데드 레터 주제 모니터링을 참조하세요.

데드 레터 주제 삭제

Cloud Console 또는 gcloud 명령줄 도구를 사용하여 구독에서 데드 레터 주제를 삭제할 수 있습니다.

Console

구독에서 데드 레터 주제를 삭제하려면 다음 단계를 완료하세요.

  1. Cloud Console에서 구독 페이지로 이동합니다.

    구독 페이지로 이동

  2. 구독 목록에서 업데이트할 구독 옆의 를 클릭합니다.

  3. 컨텍스트 메뉴에서 편집을 선택합니다.

    수정 옵션이 강조표시된 컨텍스트 메뉴

  4. 데드 레터 처리 섹션에서 데드 레터 처리 사용을 지웁니다.

  5. 업데이트를 클릭합니다.

gcloud

구독에서 데드 레터 주제를 삭제하려면 gcloud pubsub subscriptions update 명령어를 실행합니다.

gcloud pubsub subscriptions update subscription-id \
  --clear-dead-letter-policy

가격

Pub/Sub 서비스는 메시지를 데드 레터 주제로 전달하므로 다음과 같은 수수료가 발생합니다.

  • 데드 레터 주제가 포함된 프로젝트와 연결된 결제 계정으로 청구되는 게시 수수료
  • 데드 레터 주제가 있는 구독이 포함된 프로젝트와 연결된 결제 계정으로 청구되는 구독 이그레스 수수료

데드 레터 주제의 메시지 스토리지 위치 정책에서 데드 레터 주제가 있는 구독이 포함된 리전을 허용하지 않는 경우 게시 이그레스 수수료도 적용됩니다. 게시 이그레스 수수료는 데드 레터 주제가 포함된 프로젝트와 연결된 결제 계정으로 청구됩니다.

자세한 내용은 가격 책정을 참조하세요.

다음 단계