無償で高速に動作するオープンソースツールは、クローズドソース製品に比べ好まれることが多くなっています。利用者に厳しい制限を設けないため、オープンソースアプリは今日では一般的です。
AMQP標準は、オープンソースアプリ開発で広く利用されるメッセージプロトコルです。本稿では、その意義、利用法、主要な用語について解説します。
AMQPはAdvanced Message Queuing Protocolのことです。
世界的に認められた規格で、主にアプリ層で動作します。クライアントとブローカー間の優れた通信連携を実現するために用いられます。
パブリッシャーがメッセージ生成の責任を負い、クライアントがそれらを受信・管理します。
RabbitMQなどのブローカーの役割は、交換の一部となるメッセージをパブリッシャーからクライアントへ直接届けることです。
主要な機能としてルーティング、メッセージ指向、キューイングが挙げられます。AMQPを利用することで、様々な構成や基盤に対応した相互運用性が実現され、プロトコルに準拠したクライアントライブラリやブローカーを活用可能となります。
2003年にJohn O’ Haraによって初めて作られたAMQPは、その誕生以来大きく進化し、豊かな歴史を有します。JohnがAMQPを生み出した際、彼はJPMorgan Chaseに勤務しており、同社はAMQPの全権を保有してiMatrix Corporationとの契約に利用しました。両社はAMQPを用いてプロトコル文書とCブローカーの設計を行い、この利用方法は2006年半ばまで続きました。
しかし、JPMorgan ChaseはAMQPを広く普及させ、他社でも利用できるようにすることを決断しました。そのため、2005年半ばにCisco、Red Hat、IONA Technologies、TWISTなどの大手IT企業を含むAMQPユーザーグループの設立に努めました。
その後、グループは徐々に拡大し、23社となりました。新たに参加した企業にはBarclays、IIT Software、Bank of America、Credit Suisse、Progress Software、Informaticaなどが含まれます。
2011年10月にAMQP 1.0がリリースされ、そのすぐ後、11月1日にOASIS技術委員会が設立され、AMQP 1.0の進展を監視する任務を担いました。
作業委員会の意見を受け、第一稿と第二稿がそれぞれ2012年2月と6月に発表されました。
数か月後、2012年10月末頃にAMQPは正式なOASIS標準となりました。
2014年には、OASISのAMQP標準はIECやISOなどの国際規格にも認められました。
AMQPを導入する際には、主要な用語の理解が重要です。本稿ではよく使用される用語について解説します。
先述の用語に加え、AMQPモデル導入に用いられる特定の構成要素についても知っておく必要があります。
エクスチェンジはメッセージを受信し、適切なキューへ振り分ける役割を担います。Fanout、Headers、Topic、Directの4種類があり、ブローカーにとって欠かせない要素です。
チャネルとは、既存の接続内で構築されるAMQPピア間の多重化された仮想接続を指します。
メッセージとそのリソースや発信元を関連付けるための識別されたエンティティです。
バインディングは、キューやエクスチェンジに関するあらかじめ定められた指示の集合を示し、メッセージの送信と配送を制御します。
仮想ホストは、ブローカー内で分離の機能を提供する仕組みで、ユーザーとそのアクセス権に応じて複数が同時に動作することがあります。
AMQPの仕組みはシンプルですが、全ての準備が整いシステムが通信可能な状態になってから動作します。
エクスチェンジは、まずメッセージをクライアントへ届け、規定に基づいて処理を行い、その結果を1つまたは複数のキューに振り分けるという重要な役割を担います。採用されるエクスチェンジの種類によって、ルーティング方法が決定されます。
例えば、‘direct’タイプの場合、追加されたデータに最終的なメッセージの行き先が含まれます。一方、Fanoutエクスチェンジはルーティング情報を使用せず、接続された全てのキューに同じ情報を送信します。
AMQPの概要と動作が十分に理解できたところで、API開発にどのように活かせるか説明します。AMQPを用いると、APIは以下のことが可能です。
例えば、AMQPがAPIで用いられるシナリオは以下の通りです。
まず最初の例について詳しく説明します。
このように、HTTPと比較して非同期性があるため、AMQPではコールバックが必要となり、また‘fetch’エンドポイントの設計はより複雑になります。
結論として、API機能を適切に開発できれば、AMQPはHTTPとも良好に連携します。軽量なため、アプリのパフォーマンスが大幅に向上するでしょう。もし開発の複雑さに対応が難しい場合は、HTTP単体でも十分な機能を果たします。APIセキュリティに関する興味深い記事もあります。
AMQPは、消費者とパブリッシャー向けに設計された先進的なメッセージプロトコルです。このオープンソースアプリは、基盤技術やプラットフォームを気にすることなく通信を可能にします。本稿では、AMQPの概要、歴史、構成要素、動作について詳しく解説しました。これにより、本プロトコルへの理解が深まったことを願います。
最新情報を購読