스냅샷 또는 타임스탬프를 탐색하여 Pub/Sub에서 메시지 재생

사용자가 메시지를 확인한 후에는 Pub/Sub에서 메시지를 가져올 수 없습니다. 그러나 잘못된 확인을 수행하는 등 확인된 메시지를 재생해야 하는 경우가 있을 수 있습니다. 탐색 기능을 사용하여 이전에 확인된 메시지를 미확인됨으로 표시하고 Pub/Sub에서 해당 메시지를 다시 전송하도록 합니다. 탐색을 사용해 상태를 확인됨으로 변경하여 확인되지 않은 메시지를 삭제할 수도 있습니다.

스냅샷 또는 타임스탬프를 탐색하여 구독에서 메시지를 재생합니다. 이 가이드에서는 탐색을 사용하여 이전에 확인된 Pub/Sub 메시지를 재생하는 방법의 예시를 보여줍니다.


Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Set up a Google Cloud console project.

    Set up a project

    Click to:

    • Create or select a project.
    • Enable the Pub/Sub API for that project.

    You can view and manage these resources at any time in the Google Cloud console.

  3. Install the Google Cloud CLI.
  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Set up a Google Cloud console project.

    Set up a project

    Click to:

    • Create or select a project.
    • Enable the Pub/Sub API for that project.

    You can view and manage these resources at any time in the Google Cloud console.

  6. Install the Google Cloud CLI.
  7. To initialize the gcloud CLI, run the following command:

    gcloud init

gcloud 명령줄 인터페이스 사용

gcloud를 사용하는 가장 쉬운 방법은 Cloud Shell에 있습니다. Google Cloud CLI와 함께 제공되는 명령줄 도구를 사용할 수도 있습니다. 모든 Cloud API 및 기본 Debian 이미지를 포함한 액세스 범위를 가지는 완전히 새로운 Compute Engine 머신 인스턴스를 만드는 경우 gcloud CLI에 대한 설치 기본 요건이 자동으로 충족됩니다. 인스턴스를 만드는 가장 간단한 방법은 Compute Engine UI를 사용하는 것입니다. 이 문서의 나머지 부분에서는 다음 명령줄 도구 중 하나를 사용한다고 가정합니다.

gcloud 사용에 대한 자세한 내용은 gcloud 빠른 시작을 참조하세요. Pub/Sub gcloud 명령어 전체 목록은 gcloud 참조gcloud pubsub 섹션에서 확인할 수 있습니다.

스냅샷 만들기 및 탐색

주제 및 구독을 만듭니다. 더 나은 상호작용을 위해 확인 기한은 짧게 적용하세요.

gcloud pubsub topics create seek-demo-topic
gcloud pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10

지금까지는 구독 메시지가 확인되지 않았습니다. 스냅샷을 만들어 이 상태를 캡처하세요.

gcloud pubsub snapshots create my-snapshot --subscription=seek-demo-sub
gcloud pubsub snapshots list

이제 메시지를 게시하고 가져오고 확인하세요.

gcloud pubsub topics publish seek-demo-topic --message 'hello, world'
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub

이후의 Pull은 새로운 메시지를 생성하지 않습니다(일부 일시적 중복 가능).

gcloud pubsub subscriptions pull --auto-ack seek-demo-sub

스냅샷 구독을 탐색하여 메시지를 복구할 수 있습니다. 메시지는 즉시 전송되지 않을 수 있습니다. Pub/Sub은 메시지 전송 지연 시간을 보장하지 않습니다. 그러나 스냅샷에 보관된 메시지는 결국 한 번 이상 전송됩니다.

gcloud pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot
gcloud pubsub subscriptions pull seek-demo-sub --auto-ack

구독의 주제가 스냅샷의 주제와 동일한 경우 동일한 스냅샷에 대한 다른 구독을 찾을 수 있습니다.

gcloud pubsub subscriptions create seek-demo-sub2 --topic=seek-demo-topic --ack-deadline=10
gcloud pubsub subscriptions seek seek-demo-sub2 --snapshot=my-snapshot

이제 seek-demo-sub2에서 Pull 하면 seek-demo-sub2가 생성되기 전에 게시된 메시지가 생성됩니다.

gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack

스냅샷 작업을 완료하면 다음을 삭제합니다.

gcloud pubsub snapshots delete my-snapshot

타임스탬프 탐색

확인된 메시지를 재생하는 또 다른 방법은 타임스탬프를 탐색하는 것입니다. 타임스탬프를 탐색하려면 먼저 retain-acked-messages를 사용하여 확인된 메시지를 보관하도록 구독을 구성해야 합니다. retain-acked-messages가 설정된 경우 Pub/Sub는 확인된 메시지를 7일 동안 보관합니다.

이 단계는 스냅샷이 아닌 타임스탬프를 탐색하는 경우에만 수행하면 됩니다.

gcloud pubsub subscriptions update seek-demo-sub --retain-acked-messages

이제 메시지를 게시하고 가져오고 확인하세요.

gcloud pubsub topics publish seek-demo-topic --message 'hello, world'
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub

이후의 Pull은 메시지를 반환하지 않습니다.

gcloud pubsub subscriptions pull seek-demo-sub

이제 이전의 구독을 탐색하여 메시지를 복구하세요. 날짜 연산 플래그는 GNU와 BSD(MacOS) 버전에서 date 명령어가 다릅니다.

export TS_FORMAT=%Y-%m-%dT%H:%M:%SZ
gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)

이후의 Pull은 메시지를 다시 생성합니다.

gcloud pubsub subscriptions pull --auto-ack seek-demo-sub

또한 탐색을 사용하여 현재 시간과 같은 특정 시점 이전에 게시된 모든 메시지의 전달을 건너뛸 수 있습니다. 이렇게 하려면 현재 시간에 대한 구독을 탐색하여 모든 과거 메시지를 확인한 것으로 표시하세요.

gcloud pubsub topics publish seek-demo-topic --message 'hello, world'
gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u +$TS_FORMAT)

일정 적용 지연 시간이 지나면(최대 60초) 메시지가 더 이상 전송되지 않습니다. 메시지를 확인하지 않고도 Pull 명령어를 반복적으로 실행하여 이를 확인할 수 있습니다.

gcloud pubsub subscriptions pull seek-demo-sub

Cloud 콘솔 사용

Cloud 콘솔의 구독 세부정보 페이지에서 스냅샷을 생성하거나 기존 스냅샷을 탐색할 수 있습니다. 스냅샷 이름 지정 규칙은 리소스 이름을 참조하세요.

스냅샷 생성

  1. Google Cloud 콘솔에서 Pub/Sub 구독 페이지로 이동합니다.

    구독 페이지로 이동

  2. 목록에서 구독을 선택합니다.

  3. 스냅샷 만들기를 클릭합니다.

  4. 스냅샷의 ID를 입력한 다음 만들기를 클릭하여 저장합니다.

스냅샷은 Google Cloud 콘솔의 스냅샷 페이지에서 확인할 수 있습니다. 개별 주제의 세부정보 페이지에서 스냅샷을 관리할 수도 있습니다.

구독 재생

메시지 재생 대화상자를 통해 이전 시점 또는 저장된 스냅샷을 탐색할 수 있습니다. 대화상자를 열려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Pub/Sub 구독 페이지로 이동합니다.

    구독 페이지로 이동

  2. 목록에서 구독을 선택합니다.

  3. 메시지 재생을 클릭합니다.

  4. 탐색에서 이전 시점으로 또는 스냅샷으로를 선택한 다음 탐색할 시간 또는 스냅샷을 선택합니다.

  5. 탐색을 클릭하여 메시지를 재생합니다.

어땠나요?

Pub/Sub 지원 페이지에서 추가 리소스 및 링크를 볼 수 있습니다.

다음 단계

메시지 재생 및 삭제를 참조하세요.