MQ Telemetry Transport
Channel: 宇宙のすべての知識 プリンシピア
Date: 2021-10-07

MQ Telemetry Transport, by Wikipedia https://ja.wikipedia.org/wiki?curid=3151286 / CC BY SA 3.0

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