Pub/Sub メッセージの作成とレスポンス

Google Cloud Pub/Sub は、アプリケーション間で信頼できる多対多の非同期メッセージングを行います。パブリッシャー アプリケーションはメッセージを「トピック」に送信し、その他のアプリケーションはそのトピックにサブスクライブしてメッセージを受信できます。

このドキュメントでは、Google Cloud クライアント ライブラリを使用して、フレキシブル環境で動作するアプリで Google Cloud Pub/Sub メッセージを送受信する方法について説明します。

要件

  • App Engine の Java 用「Hello, World!」の手順に沿って環境とプロジェクトを設定し、App Engine の Java アプリの構造について理解します。
  • このドキュメントで説明しているサンプル アプリケーションを実行するために必要なので、プロジェクト ID をメモして保存します。

    サンプルアプリのクローンの作成

    サンプルアプリをローカルマシンにコピーし、pubsub ディレクトリに移動します。

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples
    cd java-docs-samples/flexible/pubsub
    

    トピックとサブスクリプションを作成する

    トピックとサブスクリプションを作成します。Pub/Sub サーバーがリクエストを送信するエンドポイントも指定します。

    gcloud beta pubsub topics create YOUR_TOPIC_NAME
    gcloud beta pubsub subscriptions create YOUR_SUBSCRIPTION_NAME \
        --topic YOUR_TOPIC_NAME \
        --push-endpoint \
        https://YOUR_PROJECT_ID.appspot.com/pubsub/push?token=YOUR_TOKEN \
        --ack-deadline 10
    

    YOUR_TOKEN は、ランダムなシークレット トークンで置き換えます。push エンドポイントがこれを使用してリクエストを検証します。

    app.yaml を編集する

    app.yaml を編集して、トピックと検証トークンの環境変数を設定します。

    env_variables:
      PUBSUB_TOPIC: <your-topic-name>
      PUBSUB_VERIFICATION_TOKEN: <your-verification-token>

    コードのレビュー

    サンプルをローカルで実行する

    ローカルで実行する場合、Google Cloud SDK を使用して Google Cloud API の認証を行うことができます。前提条件で説明したように環境が設定されている場合は、この認証を行う gcloud init コマンドがすでに実行されています。

    mvn clean package
    

    次に、アプリケーションを起動する前に環境変数を設定します。

    export PUBSUB_VERIFICATION_TOKEN=[your-verification-token]
    export PUBSUB_TOPIC=[your-topic]
    mvn jetty:run
    

    プッシュ通知をシミュレートする

    アプリケーションは、ローカルでメッセージを送信できますが、push メッセージを受信することはできません。push メッセージをシミュレートするには、ローカル プッシュ通知エンドポイントに HTTP リクエストを送信します。このサンプルには、sample_message.json というファイルが含まれています。

    curl または httpie を使用して、HTTP POST リクエストを送信できます。

    curl -H "Content-Type: application/json" -i --data @sample_message.json ":8080/pubsub/push?token=[your-token]"
    

    または

    http POST ":8080/pubsub/push?token=[your-token]" < sample_message.json
    

    レスポンス:

    HTTP/1.1 200 OK
    Date: Wed, 26 Apr 2017 00:03:28 GMT
    Content-Length: 0
    Server: Jetty(9.3.8.v20160314)
    

    リクエストの完了後、localhost:8080 を更新すると、受信メッセージのリストにメッセージが表示されます。

    App Engine で実行する

    gcloud コマンドライン ツールを使用してデモアプリを App Engine にデプロイするには、app.yaml が存在するディレクトリから次のコマンドを実行します。

    mvn appengine:deploy
    

    これで、https://[YOUR_PROJECT_ID].appspot.com のアプリケーションにアクセスできます。フォームを使用してメッセージを送信できますが、通知を受信するアプリケーションのインスタンスが常に同じとは限りません。複数のメッセージを送信してページを更新すると、受信メッセージを確認できます。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Java の App Engine フレキシブル環境に関するドキュメント