今回は、cloud Pub/Subをローカルで動かす環境の構築方法と利用時の注意点について紹介しようと思います。cloud Pub/Subに興味がある方は、以前の記事、Pub/Subメッセージングモデルで触れていますので、こちらも参考にしていただけると幸いです。

以前、firestoreを利用するためにFirebase Local Emulator Suiteを紹介させていただきました。今回もこのemulator機能を利用します。

セットアップ方法

エミュレータのセットアップをします。下記のコマンドで各種エミュレータが選択できます。

$  firebase init emulators 

今回は、Pub/Subの項目を選んでスペースで選択します。

エミュレータを起動する

下記のコマンドエミュレータを起動します。これもfirestoreの場合と同様です。 

$ firebase emulators:start 

 こちらで起動するエミュレータは、fibase.jsonの定義に従います。下記設定ですと、firestorepubsubがエミュレータとして起動します。

{
  "firestore": {
    "rules": "./firestroe/firestore.rules",
    "indexes": "./firestore/firestore.indexes.json"
  },
  "emulators": {
    "firestore": {
      "port": "9000"
    },
    "ui": {
      "enabled": true
    },
    "pubsub": {
      "port": 8085
    }
  }
}

エミュレータはこれでセットアップ完了です。

アプリケーションからエミュレータを利用する

環境変数を利用します。デフォルト設定では、pubsubのエミュレータは、8085ポートを利用します。環境変数には、以下のように設定します。

環境変数名
PUBSUB_EMULATOR_HOSTlocalhost:8085
PUBSUB_PROJECT_ID任意

PUBSUB_PROJECT_IDについては、GCP上に存在しないプロジェクト名でも大丈夫です。こちらの設定を参照するようにアプリケーションを起動することで、エミュレータ機能が利用できます。

注意点

こちらのエミュレータ機能の注意点について紹介します。

  • gcloudコマンドからは機能しません。
    例えば、エミュレータ上にtopicを作成したり、subscriptionを生成したりすることは出来ません。必要に応じてgcloud SDKを通して行って下さい。
  • emulatorUIは提供されていません。

この2つには注意が必要です。sdkを通すことでエミュレータ機能を使うことができるので、python等の簡単なスクリプト言語で簡単な確認を行うのが良いかと思います。

おわりに

今回は、Cloud Pub/Subをローカル上のエミュレータで動かす手順と注意点について紹介しました。慣れればすぐに利用できるので、是非利用して見てください。