이 페이지에서는 메시지를 순서대로 수신하는 방법에 대해 설명합니다.
메시지 수신에 대한 자세한 내용은 구독자 개요를 참조하세요.
순서대로 메시지 수신
메시지에 동일한 순서 키가 있으면서 리전이 동일한 경우 Pub/Sub 서비스에서 메시지를 수신하는 순서대로 메시지 순서를 사용할 수 있습니다.
Pub/Sub는 각 메시지를 최소 한 번은 전송하므로 Pub/Sub 서비스에서 메시지를 다시 전송할 수 있습니다. 순서대로 메시지를 수신하는 경우 Pub/Sub 서비스에서 순서 키가 포함된 메시지를 다시 전송할 때, Pub/Sub는 동일한 순서 키가 포함된 후속 메시지를 다시 전송하여 순서를 유지합니다. Pub/Sub 서비스는 최초에 받은 순서대로 이러한 메시지를 다시 전송합니다.
Pub/Sub 서비스에서 순서 키가 포함된 메시지를 다시 전송하는 경우 Pub/Sub 서비스는 확인된 메시지를 포함하여 동일한 순서 키로 모든 후속 메시지도 다시 전송합니다. 구독에서 메시지 순서 지정 및 데드 레터 주제가 모두 사용 설정된 경우, 가능한 경우 Pub/Sub가 메시지를 데드 레터 주제로 전달하기 때문에 그렇지 않을 수 있습니다. 재전송된 메시지가 수신되면 다시 메시지 수신을 확인해야 합니다. 이전 메시지가 확인되지 않은 상태에서 후속 메시지가 전송된다는 보장은 없습니다.
정렬된 키 및 메시지 전송
순서 키가 동일한 메시지는 순서대로 전송됩니다.
순서 키가 다른 메시지는 게시 시간과 관계없이 순서대로 전송됩니다.
메시지를 확인할 수 없게 되면 다른 순서 키의 메시지 전송을 보류할 수 있습니다. 이 문제는 서버가 예기치 않게 다시 시작되거나 트래픽 변경으로 인해 사용된 서버 집합에 변경사항이 있을 때 발생 가능합니다. 이러한 이벤트에서 순서를 보존하려면 순서 키가 다른 경우에도 새 서버의 메시지가 전송되기 전에 이전 서버에 게시된 모든 메시지를 확인해야 합니다. 모든 메시지를 적시에 확인할 수 없는 경우 구독에 데드 레터 주제를 연결하는 것이 좋습니다. 데드 레터 주제에 작성된 메시지 순서는 보존되지 않을 수 있습니다.
메시지 순서 사용 설정
메시지를 순서대로 받으려면 메시지를 수신하는 구독에서 메시지 순서 속성을 설정하세요. 메시지를 순서대로 수신하면 지연 시간이 늘어날 수 있습니다.
Google Cloud 콘솔, Google Cloud CLI, Pub/Sub API를 사용하여 구독을 만들 때 메시지 순서 속성을 설정할 수 있습니다.
콘솔
메시지 순서 속성을 설정한 구독을 만들려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 구독 페이지로 이동합니다.
구독 만들기를 클릭합니다.
구독 ID를 입력합니다.
메시지를 받을 주제를 선택합니다.
메시지 순서 섹션에서 순서 키로 메시지 순서 지정을 선택합니다.
만들기를 클릭합니다.
gcloud
메시지 순서 속성을 설정한 구독을 만들려면 gcloud pubsub subscriptions create
명령어와 --enable-message-ordering
플래그를 사용합니다.
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --enable-message-ordering
SUBSCRIPTION_ID를 구독 ID로 바꿉니다.
요청이 성공하면 명령줄에 확인 메시지가 표시됩니다.
Created subscription [SUBSCRIPTION_ID].
REST
메시지 순서 속성을 설정하여 구독을 만들려면 다음과 같이 PUT
요청을 보냅니다.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer $(gcloud auth application-default print-access-token)
다음을 바꿉니다.
- PROJECT_ID: 주제가 있는 프로젝트의 프로젝트 ID
- SUBSCRIPTION_ID: 구독의 ID
요청 본문에서 다음을 지정합니다.
{ "topic": TOPIC_ID, "enableMessageOrdering": true, }
TOPIC_ID를 구독에 연결할 주제의 ID로 바꿉니다.
요청이 성공하는 경우 응답은 JSON 형식의 구독입니다.
{ "name": projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID, "topic": projects/PROJECT_ID/topics/TOPIC_ID, "enableMessageOrdering": true, }
C++
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 C++ 설정 안내를 따르세요. 자세한 내용은 Pub/Sub C++ API 참조 문서를 확인하세요.
C#
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 C# 설정 안내를 따르세요. 자세한 내용은 Pub/Sub C# API 참조 문서를 확인하세요.
Go
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Go API 참조 문서를 참조하세요.
자바
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 Pub/Sub 자바 API 참조 문서를 참조하세요.
Node.js
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Node.js API 참조 문서를 참조하세요.
Python
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Python API 참조 문서를 참조하세요.
Ruby
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Ruby 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Ruby API 참조 문서를 참조하세요.
메시지 순서 속성이 설정되면 Pub/Sub 서비스는 Pub/Sub 서비스에서 메시지를 수신하는 순서대로 동일한 순서 키가 포함된 메시지를 전송합니다. 예를 들어 게시자가 순서 키가 동일한 2개의 메시지를 보내면 Pub/Sub 서비스에서는 오래된 메시지를 먼저 전송합니다.