リージョン ID
REGION_ID
は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r
が App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。
詳しくは、リージョン ID をご覧ください。
Pub/Sub は、信頼できる多対多の非同期メッセージングをアプリケーション間で行います。パブリッシャー アプリケーションはメッセージをトピックに送信し、その他のアプリケーションはそのトピックにサブスクライブしてメッセージを受信できます。
このドキュメントでは、Cloud クライアント ライブラリを使用して、.NET アプリで Pub/Sub メッセージを送受信する方法を説明します。
前提条件
- App Engine の .NET 用「Hello, World!」の手順に沿って環境とプロジェクトを設定し、App Engine の .NET アプリの構造について理解します。
- このドキュメントで説明しているサンプルアプリを実行する際に必要となるため、プロジェクト ID を書き留めておきます。
- 手順に沿ってサービス アカウントとサービス アカウント キーを作成し、アプリケーションで使用します。
-
Google Cloud Pub/Sub API を有効にします。
サンプルアプリのクローン作成
サンプルアプリをローカルマシンにコピーし、pubsub
ディレクトリに移動します。
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples
cd dotnet-docs-samples/appengine/flexible/pubsub
トピックとサブスクリプションの作成
トピックとサブスクリプションを作成します。Pub/Sub サーバーがリクエストを送信するエンドポイントも指定します。
gcloud pubsub topics create YOUR_TOPIC gcloud pubsub subscriptions create YOUR_SUBSCRIPTION ` --topic YOUR_TOPIC ` --push-endpoint ` https://YOUR_PROJECT_ID.REGION_ID.r.appspot.com/pubsub/push?token=YOUR_SECRET_TOKEN ` --ack-deadline 10
環境変数の設定
appsettings.json
ファイルを編集して、プロジェクト ID を設定します。
コードレビュー
サンプルアプリでは、Cloud クライアント ライブラリを使用しています。
サンプルのローカルでの実行
ローカルで実行する場合、Google Cloud CLI で Google Cloud APIs を使用するための認証を行うことができます。前提条件に記載されているとおりに環境をセットアップしていれば、この認証のための gcloud init
コマンドはすでに実行されています。
サンプルアプリをローカルで実行するには:
Visual Studio
Visual Studio で
dotnet-docs-samples\appengine\flexible\AppEngineFlex.sln
を開きます。ソリューション エクスプローラーで [Pubsub] を右クリックし、[Debug] > [Start new instance] の順に選択します。
コマンドライン
dotnet-docs-samples\appengine\flexible\Pubsub
ディレクトリから次のコマンドを実行します。dotnet restore dotnet run
ウェブブラウザに次のアドレスを入力します。
http://localhost:5000/
プッシュ通知をシミュレートする
アプリケーションは、ローカルでメッセージを送信できますが、push メッセージを受信することはできません。push メッセージをシミュレートするには、ローカルのプッシュ通知エンドポイントに HTTP リクエストを送信します。このサンプルには、sample_message.json
というファイルが含まれています。
HTTP POST
リクエストを送信するには、次のコマンドを実行します。
Get-Content -Raw .\sample_message.json | Invoke-WebRequest -Uri
http://localhost:5000/Push?token=your-secret-token -Method POST -ContentType
'text/json' -OutFile out.txt
リクエストの完了後、localhost:5000
を更新すると、受信メッセージのリストにメッセージが表示されます。
App Engine 上で実行する
gcloud
コマンドライン ツールを使用してデモアプリを App Engine にデプロイするには、app.yaml
ファイルが配置されているディレクトリから次のコマンドを実行します。
Visual Studio
Hello World アプリをデプロイするには:
-
Visual Studio で
dotnet-docs-samples\appengine\flexible\AppEngineFlex.sln
を開きます。 - ソリューション エクスプローラで [Pubsub] を右クリックし、[Publish to Google Cloud...] を選択します。
- [App Engine Flex] をクリックします。
- [Publish] をクリックします。
コマンドライン
dotnet-docs-samples\appengine\flexible\Pubsub
ディレクトリから次のコマンドを実行します。dotnet restore dotnet publish cd bin\Debug\netcoreapp2.1\publish gcloud app deploy
これで、https://PROJECT_ID.REGION_ID.r.appspot.com
のアプリケーションにアクセスできます。フォームを使用してメッセージを送信できますが、アプリケーションのどのインスタンスが通知を受信するかはわかりません。複数のメッセージを送信してページを更新すると、受信メッセージを確認できます。