MQ Telemetry Transport

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

MQ Telemetry Transport(Message Queue Telemetry Transport、略称 MQTT)は、メッセージ指向ミドルウェアのアプリケーション層で使用される、TCP/IPによるPub/Sub型データ配信モデルの軽量なメッセージキュープロトコルである。

非力なデバイスやネットワークが不安定な場所でも動作しやすい様にメッセージ通信電文が軽量に設計されている事が特徴。

Pub/Sub型メッセージング·パターンには、メッセージブローカーが必要である。

ブローカーは、メッセージのTopicに基づいて、それを必要としているクライアントにメッセージ配信をしている。

アンディー·スタンフォード·クラーク英語版とシーラスリンクソリューションのアーレンニッパーは1999年に、プロトコルの最初のバージョンを執筆している。


仕様[編集]

仕様はロイヤリティフリーで公開されていて、現在の仕様は3.1となっている。[1]


特徴[編集]

次の様な特徴を持っている。

軽量なプロトコル[編集]

プロトコル電文仕様が軽量で且つシンプルになっている。

  • ヘッダーサイズが最小で 2 byte
  • シンプルなプロトコルシーケンス

柔軟性の高いメッセージ配布(Sub:購読)[編集]

配布先条件が"/"区切りの階層構造になっていて、且つワイルドカードによる指定ができる。
配布先はそのパターンにマッチした宛先になる。

  • TopicベースでのPub/Sub
  • 1対1、1対N、N対Nのメッセージ配布

メッセージ配布の品質[編集]

アプリケーションの特性に合わせて三種類のQoS(Quality of Service)レベルの指定ができる。

  • QoS0:最高1回
    • メッセージが確実に届く保証はない
    • メッセージ配布に失敗しても再送をしない
  • QoS1:最低1回
    • 必ずメッセージ配布するが、重複する可能性がある
  • QoS2:正確に1回
    • 必ずメッセージを配布して、重複も発生しない

メッセージ再配布機能[編集]

メッセージ再配布機能(Durable subscribe)は、次のフローで処理がされる。

  1. 意図せずにSubscriber(メッセージ配布)通信が切断
  2. その後、当該のSubscriberが再接続
  3. 切断から再接続までに発生したメッセージを再送処理
  4. QoS1,2のメッセージを再配布する

Last Will and Testament[編集]

Retain[編集]

  • ブローカーが最後に配布したメッセージは必ず保存する

ブローカー[編集]

MQTTをサポートするブローカー(MQサーバ)は数多くある。

それぞれのサーバがサポートする機能には、基本機能の他,サーバ特有の機能を持っている。[2]

主なMQTTブローカーは以下の通り。

  • IBM MessageSight (商用、ハードウェア)
  • IBM WebSphere MQ Telemetry (商用)
  • 時雨堂 Akane (商用)
  • Mosquitto (OSS)
  • RabbitMQ (OSS) ※Pluginが必要
  • Apache_ActiveMQ (OSS)

使用しているプロジェクト[編集]

現実の世界では、MQTTを実装するプロジェクトの数がある。

Facebook Messenger[編集]

FacebookのメッセンジャーにMQTTを使用している。

IECC Scalable[編集]

IECCシグナリング制御システムのDeltaRailの最新バージョンでは、システムとシグナリングシステムの他の構成要素のさまざまな部分内の通信のためのMQTTを使用している。

外部リンク[編集]

  1. ^ [1] MQ Telemetry Transport (MQTT) V3.1 プロトコル仕様
  2. ^ MQTT Broker Feature Comparison Feature comparison of the most popular MQTT brokers.