PubNubからRabbitMQにイベントをストリーミングする方法
Tags: rabbitmq, messagebroker, pubnub, pubnubeventsactions
Published: 2024-03-07 15:54:04

PubNubイベント＆アクションの紹介
-------------------

PubNub Events & ActionsはPubNubサービスであり、メッセージの公開など特定のPubNubイベントをキャプチャし、これらのイベントをサードパーティのエコシステムに送信することができます。PubNubイベントをこれらのエコシステムに送信することをサポートしており、Webhookの接続やAWSなどのクラウドサービスへの直接接続など、PubNubアクションとして定義しています。すべての設定は管理ポータルで行え、コーディングは不要です。

  
私たちの [ドキュメント](https://www.pubnub.com/docs/serverless/events-and-actions/overview)を参照してください。また [イベントとアクションの設定](https://www.pubnub.com/how-to/set-up-events-and-actions/)イベントリスナーとアクションの作成の基本をカバーしています。また [JSONPathを使ったメッセージのフィルタリング](https://www.pubnub.com/how-to/eanda-advanced-jsonpath-filter/)を使ったメッセージのフィルタリングについてのハウツーも参照してください。

AMQPとは
------

[アドバンスト・メッセージ・キューイング・プロトコル](https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol)(AMQP)は、クライアントアプリケーションがスケーラブルでセキュアなAPIを通じてメッセージングミドルウェアのブローカーと通信できるようにするメッセージングプロトコルです。2003年、JPモルガン・チェースのJohn O'Haraによって開発された。 [JPモルガン・チェース](https://www.jpmorganchase.com/)のJohn O'Hara氏によって2003年に開発され、IoTデータのストリーミングやバックエンド・サービスの統合など、複雑なメッセージング・ソリューションを容易にする。2005年半ばまでには、AMQPユーザーグループの結成に向けた取り組みが行われ、以下のようなIT大手が参加した。 [シスコ](https://www.cisco.com/), [レッドハット](https://www.redhat.com/)そして [IONA Technologies](https://en.wikipedia.org/wiki/IONA_Technologies)パブリッシュ/サブスクライブのメッセージングパターンの重要性を強調している。

### ブローカーとその役割

メッセージング・ブローカーは [パブリッシャー](https://www.rabbitmq.com/docs/publishers)(メッセージを発行するアプリケーション。プロデューサーとも呼ばれる)からメッセージを受け取り、それを [コンシューマー](https://www.rabbitmq.com/docs/consumers)(処理するアプリケーション）にルーティングする。

RabbitMQはネットワークプロトコルであるため、パブリッシャー、コンシューマー、ブローカーはすべて異なるマシンに存在することができます。

RabbitMQとは
----------

[RabbitMQ](https://www.pubnub.com/guides/rabbitmq/)は、オープンソースのメッセージングキューイングソフトウェアで [メッセージブローカー](https://en.wikipedia.org/wiki/Message_broker) またはキューマネージャとして知られています。RabbitMQは以下を実装しています。 [AMQP 0.9.1](https://www.rabbitmq.com/tutorials/amqp-concepts)を実装しており、メッセージキュープロセス全体を制御する一連の標準の基礎となっている。AMQP 0.9.1は2008年11月に発行され、このチュートリアルで使用しているバージョンでもあります。簡単に言えば、アプリケーションがメッセージを転送するために接続するキューが定義されているソフトウェアです。

メッセージはあらゆる種類の情報を含むことができます。例えば、別のアプリケーション（別のサーバにある場合もあります）で開始すべきプロセスやタスクに関する情報であったり、単なるテキストメッセージであったりします。キュー・マネージャ・ソフトウェアは、受信側のアプリケーションが接続し、キューからメッセージを取り出すまで、メッセージを保存します。その後、受信側のアプリケーションがメッセージを処理します。

メッセージ・ブローカーは、様々なサービス（例えばウェブ・アプリケーション）の仲介役として機能する。メッセージブローカーは、通常多くの時間やリソースを必要とするタスクを委託することで、Webアプリケーションサーバーの作業負荷や配信時間を軽減することができます。

RabbitMQ (AMQP) PubNubアクションの作成
------------------------------

PubNubイベントをRabbitMQに接続すると、リアルタイムメッセージングと効率的なメッセージキューイングが組み合わされます。この接続により、スケーラブルなメッセージ処理と独自データの作成が可能になり、情報フローの完全な所有権と制御が保証されます。

### 前提条件

PubNubアカウントにサインアップしていることを確認してください。 [イベント＆アクション価格](https://www.pubnub.com/docs/general/resources/events-and-actions-pricing)ページをご覧ください。また、Pubnub管理者ポータル内のイベント＆アクションに移動し、「アップグレード」を選択してイベント＆アクションの料金プランを表示することもできます。このハウツーでは、PubNubデバッグコンソールを使用してメッセージを発行し、RabbitMQインスタンス内でのメッセージの処理を確認します。

### RabbitMQインスタンスのセットアップ

AWS内にRabbitMQインスタンスをセットアップします。 [Amazon MQ](https://aws.amazon.com/amazon-mq/)を使用してAWS内にRabbitMQインスタンスをセットアップします。メッセージブローカー、より具体的にはRabbitMQブローカーをホスティングするには、Dockerコンテナ内でRabbitMQイメージを実行したり、EC2インスタンスを使ってホスティングするなど、様々な方法があります。しかし、このハウツーではAmazon MQを使用します。

Amazon MQ内にRabbitMQインスタンスを作成するには、以下の手順に従ってください：

1.  以下の手順に従ってください。 [Amazonウェブサービス](https://aws.amazon.com/)(AWS)にログインします。
    
2.  検索バーで "Amazon MQ "を検索し、Amazon MQサービスをクリックします。
    
3.  Create brokers "ボタンをクリックして、ブローカーを設定します。
    
4.  Broker engine types "で "Rabbit MQ "を選択します。
    
5.  デプロイメントモードを選択します（アプリケーションのユースケースによって異なります）。
    
6.  複数のアベイラビリティゾーンは必要ないので、"Single-instance broker "を選択します。
    
7.  "rabbit-1 "などのブローカー名を入力します。
    
8.  RabbitMQ accessで、RabbitMQ管理コンソールのユーザ名とパスワードを入力します。これは後でRabbitMQインスタンスにサインインするために使用します。
    
9.  ユーザー名とパスワードは二度と表示できないので、忘れないようにしてください。
    
10.  Create Broker "を選択します。ブローカーの作成には約20分かかります。
    

これらの手順を実行すると、Amazon Web Portalは以下のようになります：

![](https://www.pubnub.com/cdn/3prze68gbwl1/47gUB6rXW9RRx1uIfNDyG/981a07e2000cf3ba053ac1658408ba83/Screenshot_2024-02-28_at_12.46.13_AM.png)

これでMessageブローカーがPubNubイベントの処理を開始するように設定されました。あとはRabbitMQインスタンスをPubNub Events & Actionsに接続するだけです。

### PubNubイベントリスナーのセットアップ

特定のPubNubイベントをリッスンし、必要に応じてPubNubイベントをフィルタリングするPubNubイベントリスナーをセットアップします。イベントリスナーは、RabbitMQインスタンスにPubNubメッセージを送信するなど、事前に定義されたアクションをトリガする特定の条件セットを待機します。PubNubイベントのフィルタリングの詳細については、当社の [ドキュメントをご覧ください。](https://www.pubnub.com/docs/serverless/events-and-actions/events#advanced-json-path).

イベントリスナーを作成するには、以下の手順に従ってください：

1.  にログインします。 [管理者ポータル](https://admin.pubnub.com/).
    
2.  ポータルの左側にある \[Events & Actions\] タブをクリックします。
    
3.  ポップアップ・ダイアログに従って、アプリケーションを1つ選択します。
    
4.  ポップアップダイアログに従って、キーセットを選択します。
    
5.  \+ Event Listener "ボタンをクリックします。
    
6.  イベントソースを選択します。このハウツーでは、"Messages "を選択します。
    
7.  Event Producer "で "Pub/Sub "を選択します。
    
8.  Event Type "で "Message sent "を選択します。
    
9.  このハウツーではフィルタの種類として "フィルタなし "を選択します。
    
10.  例えば、鉛筆アイコンをクリックして、イベントリスナーに名前を付けます："Rabbit-1リスナー"
    
11.  画面右下の "Save Changes "をクリックします。
    

以上の手順を踏むと、PubNubポータル上のイベントは以下のようになるはずです：

![](https://www.pubnub.com/cdn/3prze68gbwl1/1N2ktJi5nfhV5cwzbxsV9w/bacc1ee24c33c884a7e20d552edac22f/Screenshot_2024-02-28_at_1.07.07_AM.png)

### PubNub ActionをRabbit MQに設定する

次に、PubNubポータルにRabbit MQアクションを設定します：

1.  イベントとアクション」タブに戻って「+アクションの追加」を選択します。
    
2.  アクションタイプで "AMQP "を選択します。
    
3.  ドロップダウンの "Add event listener "を選択し、上記で作成したイベントリスナーを選択します。この場合、"Rabbit-1 Listener "を選択します。
    

RabbitMQインスタンスへのAMQP URLを取得する必要があります。まず、AMQPのURLは以下のフォーマットになっています：

a**_mqps://_**username:password@host.name:port

ここでRabbitMQインスタンスに割り当てたユーザー名とパスワードを使用し、PubNubがあなたのインスタンスにメッセージを送信できるようにします。私の場合、URLはこのように定義します：  
  
a**_mqps://_**username:password@b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com:5671

Amazon MQでRabbit MQインスタンスに移動するとホスト名が表示されます。

1.  自分のインスタンスを選択します。もしこのまま進んでいれば、"rabbit-1 "インスタンスを選択してください。
    
2.  下にスクロールします。Connections "と "Endpoints "の下にあるホスト名とポートをコピーします。
    

この場合、私のホスト名は

[**_b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com_**](mailto:password@b-d7d2f067-c7be-45a9-8c20-de79a3c309d0.mq.us-west-2.amazonaws.com)**_:5671_**

![](https://www.pubnub.com/cdn/3prze68gbwl1/5DCfgqND97DuWM4gzXfgHq/c9dec4de19377075134e24296d2d3f20/image3.png)

ここまでで、アクションはこのようになるはずだ。しかし、ルーティング・キーを作成して交換する必要がある。これを行うには、以下の手順に従ってください：

1.  Amazon MQ "rabbit-1 "インスタンスに戻ります。
    
2.  Connectionsまでスクロールダウンし、RabbitMQウェブコンソールのリンクをクリックします。RabbitMQ管理コンソールに移動します。
    
3.  以下のようなWebページが表示されます：
    

![](https://www.pubnub.com/cdn/3prze68gbwl1/5lZkMMdAqoXR5tffYI8Kdj/cd4db2aa907098f0007b2ebdc95492f7/Image_4.png)

RabbitMQインスタンスの作成時に定義したユーザー名とパスワードを入力します。RabbitMQ管理コンソールにログインしたら、キューを作成します。以下の手順に従って、ルーティングキーを取得してください：

1.  管理コンソールにログイン後、"キュー "タブに移動します。
    
2.  "Add a new queue" を選択します。
    
3.  キューに名前を付けます。これがルーティング・キーとなります。
    
4.  "Add queue" を選択します。
    

これで、管理コンソールはこのようになるはずです：

![](https://www.pubnub.com/cdn/3prze68gbwl1/6m5GFhKxpJ8RxwmcdRNDBG/c07eb1055de0508a5eb1e5815425d5dd/GDhoAIVsr_Ll6U-BoBas09ZExbUj1lvt8sLYsNZqxU3QI2EPyFvtcFDoRJvP2D2l3l3FrJmbXU_bFitsH_9P7zalf8ptcgDIdF43W_jyRijw_t_WLfcEj0m_Z4r0.png)

次に、キューのための交換を作成します。交換は、メッセージが送信される場所です。交換はメッセージを受け取り、それらを 0 個以上のキューにルーティングします。ルーティングアルゴリズムは、exchange のタイプとバインディングと呼ばれるルールに依存します。エクスチェンジを作ってみましょう。

1.  Exchanges "タブに移動する。
    
2.  "amqp.direct "というエクスチェンジを選択します。
    
3.  ドロップダウン「バインディング」を選択します。ここで、交換をキューにバインドします。
    
4.  To queue "タブには、キュー名として "Publisher "と記述します。
    
5.  ルーティング・キーは、お好きなものを指定してください。私は "amqp.publisher "としました。
    

これでRabbitMQコンソールの設定は、マイクロサービスアーキテクチャでリアルタイムのデータと通知を処理するために調整された、交換とルーティングキーの設定が反映されたはずです。

![](https://www.pubnub.com/cdn/3prze68gbwl1/5JwFENUlYKvwz4yb3gOF4w/b6af0191a23d10aad0eaa912159642ca/Image_6.png)

ルーティングキーとExchangeの名前をコピーして、PubNubアクションの必要なフィールドを埋めてください：

![](https://www.pubnub.com/cdn/3prze68gbwl1/5rOmc38fBgMHrDJnw5Fohb/49d67601ff3925d1730fd0f29457bd52/Image_7.png)

PubNub E&Aを使用したRabbitMQ統合のテスト
-----------------------------

PubNubデバッグコンソールを使用して統合をテストすることができます。PubNub管理ポータルに移動し、左側の "デバッグコンソール "を選択します。イベントリスナにフィルタがないので、どのチャネルにメッセージをPublishしても、アクションが起動し、PubNubメッセージが送信されてRabbitMQインスタンスで処理されるはずです。メッセージを入力し、いずれかのクライアントで "Send "を押すだけです。RabbitMQインスタンスがこのメッセージを受信したかどうかを確認します。

![](https://www.pubnub.com/cdn/3prze68gbwl1/7gEpCaLvIUqGnSSOFwyqw3/3a48565674d0fd9048f3cd874c9b72f0/Image_8.png)

メッセージをパブリッシュすると、RabbitMQ管理コンソールの "Publisher "キューにメッセージが表示され、効率的なメッセージスループットとリアルタイムメッセージングシステムの堅牢性が示されます。このようにRabbitMQコンソール内にメッセージが表示されるはずです。

![](https://www.pubnub.com/cdn/3prze68gbwl1/4EMqQ7mmU1wk8zMli69YYB/1e3e12292fffc203e2f32678512c5d12/Image_9.png)

この場合、私は7つのメッセージをパブリッシュしており、これらはすべて処理可能な状態でキューに入っています。

次のステップ
------

このハウツーでは、高いメッセージ配信スループットを保証する応答性の高いメッセージングシステムを開発するために、PubNubイベント＆アクションとホストされたRabbitMQインスタンスをセットアップする手順を説明しました。PubNubが提供するリアルタイムのインタラクティブ性を使って、Webサーバに接続されたデータで何らかの操作を定義するなど、誰かが独自のPubNubメッセージを処理したいと思う理由には多くのユースケースがあります。例えば [PubNub Unity SDK](https://www.pubnub.com/docs/sdks/unity)を利用することで、マルチプレイヤーゲームにおけるユーザーアクションのリアルタイム処理をマッチメイキング、ライブゲームステータス更新、リーダーボード、ゲーム内チャットに利用することができ、よりインタラクティブなゲーム体験を提供することができます。Webアプリには他にも多くの使用例があります。 [ジャバスクリプト](https://www.pubnub.com/docs/sdks/javascript)または [Java SDK](https://www.pubnub.com/docs/sdks/java).

この記事ではPubNub E&Aで設定できるPubNubアクションの1つについて説明しましたが、これ以外にも以下のようなものがあります：

-   [Webhookを呼び出す](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-webhook-action)(フィルタリングされたイベントごとにサーバを呼び出す）
    
-   [SQSに保存](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-sqs-action)(各イベントを [アマゾンのSQSキューイングサービス](https://aws.amazon.com/sqs/))
    
-   [Kinesisに送信](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kinesis-action)(に送る [Amazonのイベント・インジェストン・サービス](https://aws.amazon.com/kinesis/))
    
-   [S3に送る](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-s3-action)(つまり、データを [Amazon S3バケット](https://aws.amazon.com/s3/))
    
-   [Kafkaに送る](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-kafka-action)(データを [アパッチ・カフカ](https://kafka.apache.org/))
    
-   [IFTTTアクションを作成する](https://www.pubnub.com/docs/serverless/events-and-actions/actions/create-ifttt-action)(に送る [If This Then That](https://ifttt.com/))
    

ご質問やご不明な点がございましたら、devrel@pubnub.com のデベロッパー・リレーション・チームまでお気軽にお問い合わせください。

#### 目次

[PubNubイベント＆アクション入門](#h-0)[AMQP](#h-1)[ブローカーとその役割](#h-2)[RabbitMQとは](#h-3)[RabbitMQ（AMQP）PubNubアクションの](#h-4)[作成](#h-3)[前提](#h-5)[条件](#h-4)[RabbitMQインスタンスの](#h-6)[セットアップ](#h-4)[PubNubイベントリスナの](#h-7)[セットアップ](#h-6)[PubNubアクションのRabbit MQへのセットアップ](#h-8)[PubNub E&AWでRabbitMQとの統合を](#h-9)[テスト](#h-8)する[次の](#h-10)ページ

PubNubはどのようにお役に立ちますか？
=====================

この記事は[PubNub.comに](https://www.pubnub.com/how-to/stream-events-from-pubnub-to-rabbitmq/)掲載されたものです。

PubNubのプラットフォームは、開発者がWebアプリ、モバイルアプリ、IoTデバイス向けにリアルタイムのインタラクティブ機能を構築、提供、管理できるように支援します。

私たちのプラットフォームの基盤は、業界最大かつ最もスケーラブルなリアルタイムエッジメッセージングネットワークです。世界15か所以上で8億人の月間アクティブユーザーをサポートし、99.999%の信頼性を誇るため、停電や同時実行数の制限、トラフィックの急増による遅延の問題を心配する必要はありません。

PubNubを体験
---------

[ライブツアーを](https://www.pubnub.com/tour/introduction/)チェックして、5分以内にすべてのPubNub搭載アプリの背後にある本質的な概念を理解する

セットアップ
------

[PubNubアカウントに](https://admin.pubnub.com/signup/)サインアップすると、PubNubキーに無料ですぐにアクセスできます。

始める
---

[PubNubのドキュメントは](https://www.pubnub.com/docs)、ユースケースや[SDKに](https://www.pubnub.com/docs)関係なく、あなたを立ち上げ、実行することができます。