クライアント ライブラリを使用して Pub/Sub でメッセージをパブリッシュおよび受信する
- データのプロデューサーは Pub/Sub のトピックにメッセージをパブリッシュします。
- サブスクライバー クライアントがそのトピックへのサブスクリプションを作成してメッセージを受け取ります。
Pub/Sub 環境は、 次のいずれかの方法を使用して設定できます: Google Cloud コンソール、Cloud Shell、クライアント ライブラリ、または REST API。このページでは、クライアント ライブラリを使用して Pub/Sub でメッセージをパブリッシュする方法について説明します。
Pub/Sub では、高レベルと低レベルの自動生成クライアント ライブラリが提供されます。このクイックスタートではデフォルトで、高レベルのクライアント ライブラリをおすすめします。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
始める前に
- アカウントにログインします Google Cloud Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します Google Cloud 。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成します。 Google Cloud
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Pub/Sub API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable pubsub.googleapis.com
-
ユーザー アカウントのローカル認証情報を作成します。
gcloud auth application-default login
認証エラーが返され、外部 ID プロバイダ (IdP)を使用している場合は、 フェデレーション ID を使用して gcloud CLI にログインしていることを確認してください。
-
ユーザー アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。
roles/pubsub.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
次のように置き換えます。
PROJECT_ID: プロジェクト ID。USER_IDENTIFIER: ユーザー アカウントの識別子。 例:myemail@example.com。ROLE: ユーザー アカウントに付与する IAM ロール。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します Google Cloud 。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択には特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトを選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成します。 Google Cloud
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Pub/Sub API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を通じてこの権限が付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を通じてこの権限を取得できます。ロールを付与する方法をご覧ください。gcloud services enable pubsub.googleapis.com
-
ユーザー アカウントのローカル認証情報を作成します。
gcloud auth application-default login
認証エラーが返され、外部 ID プロバイダ (IdP)を使用している場合は、 フェデレーション ID を使用して gcloud CLI にログインしていることを確認してください。
-
ユーザー アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。
roles/pubsub.admingcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
次のように置き換えます。
PROJECT_ID: プロジェクト ID。USER_IDENTIFIER: ユーザー アカウントの識別子。 例:myemail@example.com。ROLE: ユーザー アカウントに付与する IAM ロール。
クライアント ライブラリのインストール
次のサンプルは、クライアント ライブラリのインストール方法を示しています。
Python
Python 開発環境の設定の詳細については、Python 開発環境設定ガイドをご覧ください。
# ensure that you are using virtualenv
# as described in the python dev setup guide
pip install --upgrade google-cloud-pubsub
C++
C++ ライブラリのインストール方法の詳細については、
GitHub README
をご覧ください。
C#
Install-Package Google.Cloud.PubSub.V1 -Pre
Go
サポートされているランタイムのリストについては、サポートされている Go バージョンをご覧ください。
go get cloud.google.com/go/pubsub/v2
Java
Maven を使用している場合は、次のものを pom.xml ファイルに追加します。BOM の詳細については、Google Cloud Platform ライブラリ BOM をご覧ください。
Gradle を使用している場合は、次のものを依存関係に追加します。
sbt を使用している場合は、 次のものを依存関係に追加します。
Visual Studio Code または IntelliJ を使用している場合は、次の IDE プラグインでプロジェクトにクライアント ライブラリを 追加できます。
プラグインでは、サービス アカウントのキー管理などの追加機能も提供されます。詳細は各プラグインのドキュメントをご覧ください。
Node.js
npm install @google-cloud/pubsub
PHP
composer require google/cloud-pubsub
Ruby
gem install google-cloud-pubsub
トピックとサブスクリプションを作成する
トピックを作成すると、トピックのサブスクライブやパブリッシュができます。
次の
gcloud pubsub topics create コマンドを使用して、my-topic という名前のトピックを作成します。トピックの名前は、チュートリアルの残りの部分で参照されるため、変更しないでください。
gcloud pubsub topics create my-topic
gcloud pubsub subscriptions
create コマンドを使用して、サブスクリプションを作成します。サブスクライバー アプリケーションで使用できるのは、サブスクリプションの作成後にトピックにパブリッシュしたメッセージだけです。
gcloud pubsub subscriptions create my-sub --topic my-topic
メッセージをパブリッシュする
次のサンプルを実行する前に、コード内でマークされている必須の値のいずれかをコメント化解除して入力してください。これは、前に作成したプロジェクトと Pub/Sub リソースにサンプルをリンクするために必要です。
トピック ID に my-topic を使用します。
Python
C++
C#
Go
Java
Node.js
Node.js
PHP
Ruby
メッセージの受信
パブリッシュしたばかりのメッセージを pull するようにサブスクライバーを設定します。すべてのサブスクライバーは構成可能な時間の範囲内で各メッセージに確認応答を返信する必要があります。確認応答がなかったメッセージは再配信されます。Pub/Sub は、すべてのメッセージがサブスクライバーに対して少なくとも 1 回は送信されるように、メッセージを複数回配信することがあります。
次のサンプルを実行する前に、コード内でマークされている必須の値のいずれかをコメント化解除して入力してください。これは、前に作成したプロジェクトと Pub/Sub リソースにサンプルをリンクするために必要です。
サブスクリプション ID に my-sub を使用します。
メッセージを pull する方法を示すその他の例については、クライアント ライブラリのコードサンプルをご覧ください。
Python
C++
C#
Go
Java
Node.js
PHP
Ruby
いかがでしたか
クリーンアップ(オプション)
- このガイドで使用したリソースについて、アカウント Google Cloud に課金されないようにするには、コマンドラインを使用してトピックとサブスクリプションを削除します。
gcloud pubsub subscriptions delete my-sub gcloud pubsub topics delete my-topic
-
作成した認証情報を取り消して、ローカル 認証情報ファイルを削除します。
gcloud auth application-default revoke
-
(省略可)gcloud CLI から認証情報を取り消します。
gcloud auth revoke
次のステップ
このページで説明する Pub/Sub のコンセプトについてさらに学習する。
Pub/Sub サービスの基本を確認する。
1 対多の Pub/Sub システムを構築する方法を学習する。このシステムでは、2 つの個別のサブスクライバー アプリケーションにパブリッシュするパブリッシャー アプリケーションが作成されます。
gcloud CLI または コンソールを使用する別の Pub/Sub クイックスタートを試す。
Pub/Sub API について学習します。
Kotlin を使用して Pub/Sub を実行する方法を確認する。