MQTT

MQTT（旧称：MQ Telemetry Transport、Message Queuing Telemetry Transport）は、メッセージ指向ミドルウェアのアプリケーション層で使用される、TCP/IPによるPub/Sub型データ配信モデルの軽量なデータ配信プロトコルである。
MQTTのMQは、歴史的にはMQSeriesから来ているが、メッセージキューの機能は持たない。
非力なデバイスやネットワークが不安定な場所でも動作しやすいように、メッセージ通信電文が軽量に設計されていることが特徴である。
Pub/Sub型メッセージング·パターンには、メッセージブローカーが必要である。
ブローカーは、メッセージのTopicに基づいて、それを必要としているクライアントにメッセージを配信する。
とシーラスリンクソリューションのアーレンニッパーは1999年に、プロトコルの最初のバージョンを執筆している。
仕様.
仕様はロイヤリティフリーで公開されていて、現在の仕様は5となっている。
特徴.
MQTTには、次のような特徴がある。
軽量なプロトコル.
プロトコル電文仕様は、軽量でシンプルになっている。
柔軟性の高いメッセージ配布(Sub：購読).
配布先条件がcodice_1区切りの階層構造になっており、さらにワイルドカードによる指定ができる。配布先はそのパターンにマッチした宛先になる。
メッセージ配布の品質.
アプリケーションの特性に合わせて三種類の QoS (Quality of Service) レベルの指定ができる。
メッセージ再配布機能.
メッセージ再配布機能 (Durable subscribe) は、次のフローで処理される。
ブローカー.
MQTTをサポートするブローカー（MQサーバ）は数多くある。それぞれのサーバがサポートする機能には、基本機能の他、サーバ特有の機能がある。
主なMQTTブローカーには以下のようなものがある。
メッセージタイプ.
Connect.
サーバーとの接続が確立されるのを待機し、ノード間でリンクを作る。
Disconnect.
MQTTクライアントが必要な処理を完了し、TCP/IPセッションが切断されるのをするのを待機する。
Publish.
リクエストをMQTTクライアントに渡した後、アプリケーションスレッドに即座に戻る。
使用しているプロジェクト.
Facebook Messenger.
FacebookのメッセンジャーにMQTTを使用している。
IECC Scalable.
IECCシグナリング制御システムのDeltaRailの最新バージョンでは、システムとシグナリングシステムの他の構成要素のさまざまな部分内の通信のためのMQTTを使用している。