こんにちは、白々さじきです。
今回は、Google CloudのサービスのPub/Subを使ってみようと思います。
Pub/Subとは?
Pub/Subについては、公式ドキュメントで次のように記載されています。
Pub/Sub は、メッセージを生成するサービスを、それらのメッセージを処理するサービスと切り離す、非同期のスケーラブルなメッセージング サービスです。
Pub/Sub は、ストリーミング分析と、データを読み込んで配布するためのデータ統合パイプラインに使用されます。これは、サービスの統合を目的としたメッセージング指向のミドルウェア、または、タスクを同時に読み込むキューとしても使用されます。
要は、メッセージを送りたいサービス(パブリッシャー)と、そのメッセージを受け取って処理したいサービス(サブスクライバー)を、お互いを直接知らなくても繋ぐことができる仕組みです。
例えるなら、掲示板のようなものです。
パブリッシャーとは
「こういう情報がありますよ!」というメッセージを、トピックという名前の付いた掲示板に投稿します。誰がその情報を見るかは気にしません。
サブスクライバーとは
「この掲示板の情報に興味があります」と、サブスクリプションという形で登録します。すると、その掲示板に新しい情報が投稿されると、自動的に(または自分で見に行って)情報を受け取ることができます。
掲示板は、いつ見に行くか分からないのと同じように、サブスクライバーが確認するのも非同期で行われます。
Pub/Subを作ってみる
Pub/Subを公式ドキュメントのクイックスタートに沿って作成してみます。
まずは、「Set up a Google」をクリックし、画面の指示に従って GCP アカウントを選択した後、「Next」、「Done」の順に進んでください。

トピックの作成
チュートリアルによるとトピックは下記の手順でできるそうです。
- Google Cloud コンソールで、[Pub/Sub] ページに移動します。[Pub/Sub] に移動
- [トピック] ページで、[トピックを作成] をクリックします。
- 表示されたウィンドウで、[トピック ID] フィールドに「
MyTopic
」と入力します。残りのオプションはデフォルト値のままにして、[作成] をクリックします。成功メッセージが表示されます:
A new topic and a new subscription have been successfully created.
MyTopic
というトピックと関連するデフォルトのサブスクリプションMyTopic-sub
が作成されました。
下記の設定で作成をクリックしました。

成功すると下記のようにでます。これでトピックとデフォルトのサブスクリプションは完成です。

サブスクリプション
サブスクリプション単体の作成を行います。理由としては、デフォルト以外のサブスクリプションからもちゃんとデータの取得ができるかを確認するためです。
サブスクリプションの作成手順は下記です。
- [サブスクリプション] をクリックします。
- [サブスクリプション] ページで、[サブスクリプションを作成] をクリックします。
- [サブスクリプション ID] フィールドに、「
MySub
」と入力します。- [Cloud Pub/Sub トピックを選択してください] で、プルダウン メニューから
MyTopic
トピックを選択します。- 残りのオプションはデフォルト値のままにします。
- [作成] をクリックします。成功メッセージが表示されます:
Subscription successfully added.
- [トピック] ページをクリックし、[
MyTopic
] をクリックします。
下図のように設定します。

この後画面下の「作成」をクリックすると作成できます。
トピックにメッセージをパブリッシュしてみる
次は、サブスクリプションからpullするデータを作成します。先ほど作った「MyTopic
」にメッセージをパブリッシュしてみます。下記の手順で実施できるみたいです。ただし、メッセージ部分は「白々さじき」にしてみようと思います。
- Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。[トピック] に移動
MyTopic
トピックをクリックします。- [
MyTopic
] ページで、[メッセージ] タブをクリックします。- [メッセージをパブリッシュ] をクリックします。
- [メッセージ本文] ウィンドウで「
Hello World
」と入力します。- [公開] をクリックします。パブリッシュが正常に行われた場合は、ページの下部に「メッセージを公開しました」というメッセージが表示されます。
下記の赤枠が4番の部分です。

赤枠をクリックすると下図のように出るので、メッセージの本文に文字列を記載し、「公開」をクリックします。

サブスクリプションからメッセージを pull する
実際にトピックで公開したメッセージをpullしてみましょう。手順は下記です。
- Google Cloud コンソールで、[Pub/Sub サブスクリプション] ページに移動します。サブスクリプションに移動
- [メッセージ] タブで、[Pull] をクリックします。
Pullを押す前はまだメッセージが何もないです。

実際に押してみると下図のように表示されます。

また、2つ目のサブスクリプションでも問題なく取得できました。

取得できるメッセージには、メッセージの本文とメッセージの公開時刻が含まれます。
クリーンアップ
最後に、今回作成したリソースを削除してクリーンアップしましょう。削除手順は以下のとおりです。
- [トピック] ページに移動します。
MyTopic
の横にあるチェックボックスをオンにして、[削除] をクリックします。- 確認ウィンドウの手順を完了して、トピックを完全に削除します。
下図の赤枠をクリックすると削除モーダルが開きます。

下図の「削除」をクリックすると削除できます。

これだけだとサブスクリプションが削除されないので、サブスクリプションのページに移動して同じことをすると終わりです。
まとめ
今回は、Pub/Subを実際に作成してサブスクリプションにメッセージを送ってみました。
今回はコンソール操作だけで Pub/Sub を確認しましたが、今後はコードや他のサービスからの呼び出しも試してみたいと思います。
サポートのお願い
下記リンクからお買い物いただけると、ブログ運営のための費用が増え、有料サービスを利用した記事作成が可能になります。ご協力よろしくお願いします!

コメント