このページでは、メッセージを順に受信する方法について説明します。
メッセージの受信の詳細については、サブスクライバーの概要をご覧ください。
メッセージを順に受信
メッセージに同じ順序指定キーがあり、同じリージョンに存在している場合、メッセージの順序指定を有効にすると、Pub/Sub サービスで受信する順序でメッセージを受信できます。
Pub/Sub は各メッセージを少なくとも 1 回配信するため、Pub/Sub サービスでメッセージが再度配信される可能性があります。メッセージを順序どおりに受信し、Pub/Sub サービスで順序指定キーのあるメッセージが再配信される場合、Pub/Sub では、同じ順序指定キーのある後続のメッセージも再配信することによって順序が維持されます。Pub/Sub サービスでは、こうしたメッセージが最初に受信した順序で再配信されます。
Pub/Sub サービスが順序指定キーを持つメッセージを再配信する場合は、確認済みメッセージを含む、同じ順序キーを持つメッセージもすべて再配信します。こうしたメッセージを再度確認します。
メッセージの順序指定の有効化
メッセージを順に受信するには、メッセージを受信するサブスクリプションのメッセージ順序指定プロパティを設定します。メッセージを順に受信すると、レイテンシが増加する可能性があります。
Cloud Console、gcloud
コマンドライン ツール、または Pub/Sub API を使用してサブスクリプションを作成するときに、メッセージの順序指定プロパティを設定できます。
Console
メッセージの順序指定プロパティがあるサブスクリプションを作成する手順は次のとおりです。
Cloud Console で [サブスクリプション] ページに移動します。
[サブスクリプションを作成] をクリックします。
[サブスクリプション 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 のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
メッセージの順序設定プロパティを設定すると、Pub/Sub サービスでメッセージを受信する順序と同じ順序指定キーがあるメッセージが配信されます。たとえば、パブリッシャーが同じ順序指定キーがある 2 つのメッセージを送信する場合、Pub/Sub サービスでは最も古いメッセージが最初に配信されます。