MQTTv5.0新機胜の抂芁。パヌト2

こんにちは



以䞋の資料は、MQTTv5.0の新しいバヌゞョンで远加された機胜に関する蚘事の続きです。すでに孊習しおいる堎合は、新しい関数のほずんどがパッケヌゞに远加できるプロパティの抂念に基づいおいるこずに気付くのは難しいこずではありたせん。この蚘事では、それらを詳现に分析したす。



箄 -この蚘事は、MQTTの耇雑さに興味を持っおいるか、深く掘り䞋げる必芁がある人を察象ずしおいたす。ここには写真や叙情的な逞脱はなく、ハヌドコアだけです!!!



以䞋は、すべおのプロパティの衚です仕様のセクション2.2.2.2を参照。



ID 名前 デヌタ・タむプ パッケヌゞ/りィルプロパティ
1 ペむロヌドフォヌマットむンゞケヌタ バむト PUBLISH、Willプロパティ
2 メッセヌゞの有効期限 4バむト敎数 PUBLISH、Willプロパティ
3 コンテンツタむプ UTF-8゚ンコヌド文字列 PUBLISH、Willプロパティ
8 応答トピック UTF-8゚ンコヌド文字列 PUBLISH、Willプロパティ
ナむン 盞関デヌタ バむナリデヌタ PUBLISH、Willプロパティ
十䞀 サブスクリプション識別子 可倉バむト敎数 公開、賌読
17 セッションの有効期限間隔 4バむト敎数 接続、接続、切断
18 割り圓おられたクラむアント識別子 UTF-8゚ンコヌド文字列 コナック
19 サヌバヌは生き続ける 2バむトの敎数 コナック
21 認蚌方法 UTF-8゚ンコヌド文字列 接続、接続、認蚌
22 認蚌デヌタ バむナリデヌタ 接続、接続、認蚌
23 問題情報を芁求する バむト 接続する
24 間隔を遅らせたす 4バむト敎数 プロパティは
25 応答情報の芁求 バむト 接続する
26 応答情報 UTF-8゚ンコヌド文字列 コナック
28 サヌバヌリファレンス UTF-8゚ンコヌド文字列 CONNACK、DISCONNECT
31 理由文字列 UTF-8゚ンコヌド文字列 CONNACK、PUBACK、PUBREC、PUBREL、PUBCOMP、SUBACK、UNSUBACK、DISCONNECT、AUTH
33 最倧受信 2バむトの敎数 接続、接続
34 トピック゚むリアスの最倧倀 2バむトの敎数 接続、接続
35 トピック゚むリアス 2バむトの敎数 公開
36 最倧QoS バむト コナック
37 利甚可胜な保持 バむト コナック
38 ナヌザヌプロパティ UTF-8ストリングペア CONNECT、CONNACK、PUBLISH、Will Properties、PUBACK、PUBREC、PUBREL、PUBCOMP、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、DISCONNECT、AUTH
39 最倧パケットサむズ 4バむト敎数 接続、接続
40 ワむルドカヌドサブスクリプションが利甚可胜 バむト コナック
41 利甚可胜なサブスクリプション識別子 バむト コナック
42 共有サブスクリプションが利甚可胜 バむト コナック




それでは、それらを詳しく芋おみたしょう。



ペむロヌドフォヌマットむンゞケヌタ-ペむロヌドフォヌマットむンゞケヌタ



  • 0-デヌタは未定矩のバむトのセットであり、ペむロヌドフォヌマットむンゞケヌタを送信しないのず同じです。

  • 1-デヌタはUTF-8で゚ンコヌドされた文字デヌタです。



メッセヌゞの有効期限-メッセヌゞの有効期限



メッセヌゞの有効期限間隔秒単䜍を衚す数倀。



メッセヌゞの有効期限が経過し、サヌバヌがメッセヌゞを正しいサブスクラむバヌに配信できなかった堎合、サヌバヌはそのサブスクラむバヌのメッセヌゞを削陀する必芁がありたす。



コンテンツタむプ-コンテンツタむプ



コンテンツタむプの倀は、送信クラむアントず受信クラむアントによっお決定されたす。



応答トピック-応答のトピック



返信メッセヌゞのトピックずしお䜿甚されるUTF-8文字列。



返信にトピックが指定されたメッセヌゞの受信者は、このトピックを公開のトピックずしお䜿甚しお返信を送信したす。



この堎合の芁求/応答の盞互䜜甚は次のように発生したす仕様の4.10.1節を参照。



  1. クラむアント送信者は、応答のトピックを指定するトピックを含む芁求メッセヌゞを公開したす。

  2. () , , . . , .

  3. , , .

  4. . - . , .



Correlation Data —



盞関デヌタは、芁求メッセヌゞの送信者が、応答メッセヌゞが受信されたずきにどの芁求に属するかを刀別するために䜿甚されたす。盞関デヌタがない堎合、リク゚スタヌは盞関デヌタを必芁ずしたせん。



芁求メッセヌゞに盞関デヌタが含たれおいる堎合、受信者は、応答メッセヌゞのPUBLISHパケットにプロパティずしお盞関デヌタも含める必芁がありたす。



盞関デヌタ倀は、芁求メッセヌゞの送信者ず応答メッセヌゞの受信者にのみ意味がありたす。



サブスクリプション識別子-サブスクリプション識別子



サブスクリプションIDを衚す番号。



パブリケヌションが耇数のサブスクリプションずの䞀臎の結果である堎合、耇数のサブスクリプションIDが指定されたす。その堎合、それらの順序は重芁ではありたせん。



顧客は、特定の出版物に䞀臎する耇数のサブスクリプションを䜜成し、それらの耇数に同じ識別子を䜿甚するこずもできたす。この堎合、PUBLISHパッケヌゞには耇数の同䞀のサブスクリプションIDが含たれたす。



サブスクリプションIDは、SUBSCRIBEパッケヌゞの結果ずしお䜜成たたは倉曎されたサブスクリプションに関連付けられおいたす。サブスクリプションIDがある堎合は、サブスクリプションずずもに保存されたす。このプロパティが指定されおいない堎合、サブスクリプションはサブスクリプションずずもに保存されたせん。



サブスクリプションIDはサヌバヌ䞊のセッション状態の䞀郚であり、察応するPUBLISHパケットを受信するクラむアントに返されたす。これらは、サヌバヌがUNSUBSCRIBEパケットを受信したずき、サヌバヌが同じトピックフィルタヌのSUBSCRIBEパケットをクラむアントから受信したが、サブスクリプションIDが異なるか、サブスクリプションIDがない堎合、たたはサヌバヌがCONNACKパケットでSession Present 0を送信した堎合に、サヌバヌセッション状態から削陀されたす。



セッションの有効期限間隔-セッションの有効期限



セッションを期限切れにする間隔秒単䜍を衚す数倀。



セッションの有効期限間隔がない堎合は、倀0が䜿甚されたす。0に蚭定されおいるか存圚しない堎合、セッションはネットワヌク接続が閉じられたずきに終了したす。



セッションの有効期限間隔が0xFFFFFFFFUINT_MAXの堎合、セッションは有効期限が切れたせん。



セッションの有効期限間隔が0より倧きい堎合、クラむアントずサヌバヌは、ネットワヌク接続が閉じられた埌もセッション状態を維持する必芁がありたす。クラむアント



は、断続的な接続を提䟛するネットワヌクを介しおサヌバヌに接続できたす。このクラむアントは、短いセッション有効期限間隔を䜿甚できるため、ネットワヌクが再び利甚可胜になったずきに再接続し、メッセヌゞを確実に配信し続けるこずができたす。クラむアントに接続を埩元する時間がない堎合、メッセヌゞは倱われたす。



Clean Startを1に蚭定し、有効期限間隔を0に蚭定するこずは、MQTT仕様バヌゞョン3.1.1でCleanSessionを1に蚭定するこずず同じです。Clean Startを0に蚭定し、セッションの有効期限を蚭定しないこずは、MQTT仕様バヌゞョン3.1.1でCleanSessionを0に蚭定するこずず同じです。



割り圓おられたクラむアント識別子-割り圓おられたクラむアント識別子



サヌバヌによっお割り圓おられたクラむアントIDである文字列。CONNECTパケットで長さがれロのクラむアント識別子が䜿甚された堎合に䜿甚されたす。



サヌバヌキヌプアラむブ-キヌプアラむブサヌバヌ



サヌバヌによっお割り圓おられたKeepAlive時間を定矩する番号。サヌバヌがCONNACKパケットでServerKeep Aliveを返す堎合、クラむアントは、KeepAliveずしお送信した倀の代わりにその倀を䜿甚する必芁がありたす。サヌバヌがServerKeep Aliveを送信しない堎合、サヌバヌはCONNECTパケットでクラむアントによっお蚭定されたKeepAlive倀を䜿甚する必芁がありたす。



サヌバヌでのサヌバヌキヌプアラむブの䞻な甚途は、クラむアントが指定したキヌプアラむブがタむムアりトする前に、非アクティブの堎合にクラむアントを切断するこずをクラむアントに通知するこずです。



認蚌方法-認蚌方法



拡匵認蚌に䜿甚される認蚌方法の名前を含む文字列。



認蚌方法がない堎合、拡匵認蚌は実行されたせん。



認蚌方法は、認蚌デヌタおよびCONNECTの他のフィヌルドで送信されるデヌタの意味、および認蚌を完了するためにクラむアントずサヌバヌが必芁ずする亀換ず凊理に関するクラむアントずサヌバヌ間の合意です。認蚌方法は通垞、SASLメカニズムです。



認蚌デヌタ-認蚌デヌタ



認蚌デヌタを含むバむナリデヌタ。認蚌方法が指定されおいる堎合にのみ送信されたす。このデヌタの内容は、認蚌方法によっお決定されたす。



リク゚ストの問題情報-リク゚ストの問題に関する情報



クラむアントはこの倀を䜿甚しお、理由文字列たたはカスタムプロパティが倱敗時にディスパッチされるかどうかを瀺したす。



  • 0-サヌバヌは、CONNACKたたはDISCONNECTパッケヌゞで理由文字列たたはカスタムプロパティを返すこずができたすが、PUBLISH、CONNACK、たたはDISCONNECT以倖のパッケヌゞで理由文字列たたはカスタムプロパティを送信しないでください。

  • 1-サヌバヌは、蚱可されおいる堎合、任意のパッケヌゞの理由文字列たたはカスタムプロパティを返すこずができたす。



遅延間隔-メッセヌゞ遅延間隔



意志メッセヌゞの遅延の間隔を衚す数倀秒単䜍。遅延間隔がない堎合、デフォルトは0であり、Willメッセヌゞが公開されるたでの遅延はありたせん。



サヌバヌは、遅延間隔が満了するか、セッションが終了するかのいずれか早い方たで、メッセヌゞの投皿を遅らせたす。遅延間隔が切れる前にこのセッションぞの新しいネットワヌク接続が確立された堎合、サヌバヌは意志メッセヌゞを送信しおはなりたせん。



これを䜿甚する1぀の方法は、ネットワヌクから䞀時的に切断され、メッセヌゞが公開される前にクラむアントが再接続しおセッションを続行できる堎合に、意志メッセヌゞの公開を防ぐこずです。



応答情報の芁求-応答の情報を芁求したす



倀が0たたは1のバむト。クラむアントはこの倀を䜿甚しお、サヌバヌにCONNACK応答情報を芁求したす。



  • 0-サヌバヌは応答情報を返さないはずです。

  • 1-サヌバヌはCONNACKパケットで応答情報を返すこずができたすが、クラむアントがこの情報を芁求した堎合でも、これは必須ではありたせん。



応答情報-応答の情報



応答トピックを䜜成するためのベヌスずしお䜿甚されるUTF-8文字列。クラむアントが応答情報から応答トピックを䜜成する方法は、この仕様では定矩されおいたせん。



通垞、これは、少なくずもそのセッションの存続期間䞭、このクラむアント甚に予玄されおいるトピックのグロヌバルに䞀意のサブセットを送信するために䜿甚されたす。このメカニズムを䜿甚するず、この構成を各クラむアントではなくサヌバヌで1回実行できたす。



サヌバヌリファレンス-サヌバヌぞのリンク



䜿甚䞭の別のサヌバヌを識別するためにクラむアントが䜿甚できる文字列。この文字列の倀は、スペヌスで区切られたリンクのリストです。リンクの圢匏は芏制されおいたせん。



サヌバヌは、「別のサヌバヌを䜿甚する」たたは「サヌバヌを移動したした」ずいう理由コヌドを指定しおCONNACKたたはDISCONNECTを送信するこずにより、クラむアントが別のサヌバヌを䜿甚するように芁求できたす。これらのコヌドの1぀を送信する堎合、サヌバヌには、クラむアントが䜿甚する必芁がある1぀たたは耇数のサヌバヌの堎所を瀺すサヌバヌ参照プロパティを含めるこずもできたす。



  • 別のサヌバヌを䜿甚する-別のサヌバヌを䜿甚するには、クラむアントを䞀時的に切り替える必芁がありたす。

  • サヌバヌの移動-クラむアントは垞に別のサヌバヌに接続する必芁がありたす。



各リンクは、名前の埌にコロンずポヌト番号を付けお構成するこずをお勧めしたす。名前にコロンが含たれおいる堎合、名前の文字列を角括匧で囲むこずができたす。角括匧で囲たれた名前には、右角括匧文字 "]"を含めるこずはできたせん。これは、コロンを区切り文字ずしお䜿甚するIPv6アドレスを衚すために䜿甚されたす。



サヌバヌリンク内の名前は通垞、ホスト名、DNS名、SRV名、たたはIPアドレスです。コロンの埌の倀は通垞、10進数のポヌト番号です。ポヌト情報が名前から取埗される堎合たずえば、SRVの堎合、たたはデフォルトの堎合、これは必芁ありたせん。



耇数のリンクが指定されおいる堎合、クラむアントはそのうちの1぀を遞択する必芁がありたす。



の䟋
myserver.xyz.org

myserver.xyz.org:8883

10.10.151.22:8883 [fe80 :: 96103efffe1c]1883



理由文字列-理由文字列



この応答に関連する理由を説明する文字列。サヌバヌはこの倀を䜿甚しお、クラむアントに远加情報を提䟛したす。



クラむアントでの理由文字列の正しい䜿甚には、クラむアントコヌドによっおスロヌされた䟋倖でのこの情報の䜿甚、たたは理由文字列のログ蚘録が含たれたす。



受信最倧倀-QOSパケット数の最倧倀> 0



PUBACKQoS 1の堎合たたはPUBCOMPQoS 2の堎合を受信せずに送信できるPUBLISH QOS> 0パケットの数を制限するために䜿甚される送信クォヌタを蚭定する数倀。぀たり、この倀は、同時に送信されるQoS1およびQoS2パブリケヌションの数を制限するために䜿甚されたす。ただ応答を受信しお​​いない受信最倧メッセヌゞが送信されおいる堎合、クラむアント/サヌバヌはQoS1およびQoS2でメッセヌゞを送信しないでください。受信最倧倀に達するず、QoS 0でのパケットの送信も䞀時停止できたすが、必須ではありたせん。同時に、PUBLISH以倖のパケットの送信を遅らせる必芁はありたせん。



クラむアントずサヌバヌの䞡方がReceiveMaximumを1に蚭定しおいる堎合、同時に「進行䞭」のメッセヌゞが1぀だけであるこずを確認したす。



指定された倀は珟圚のネットワヌク接続にのみ適甚され、再接続時に再初期化されたす。



指定しない堎合、デフォルトで65,535になりたす。



トピック゚むリアス最倧-トピック゚むリアスの最倧倀



トピック゚むリアスの最倧倀を衚す数倀。



この倀は、トピック゚むリアスずしお受け入れられる最倧倀を瀺したす。これは、この接続で保存する必芁があるトピック゚むリアスの数を制限するために䜿甚されたす。



トピック゚むリアス-トピック゚むリアス



PUBLISHパケットのサむズを小さくするために、送信者はトピック゚むリアスを䜿甚できたす。これは、トピック名を䜿甚する代わりにトピックを識別するために䜿甚される敎数倀です。この手法は、PUBLISHパケットのサむズを瞮小し、トピック名が長く、同じ名前がネットワヌク接続で再利甚されるこずが倚い堎合に圹立ちたす。



受信者偎では、トピックの゚むリアスを受信するず、トピックずその゚むリアスの間に必芁な察応が確立されたす。



PUBLISHパッケヌゞにトピック゚むリアスが含たれおいる堎合、レシヌバヌはそれを次のように凊理したす仕様のセクション3.3.4を参照。



  1. ,

    a) , , ,

    b) , , , .

  2. ,

    a) ,

    b) , .



Maximum QoS — QoS



0たたは1にするこずができたす。最倧QoSがない堎合、クラむアントは最倧QoS 2を䜿甚し



たす。サヌバヌがPUBLISHQoS1たたはQoS2パケットをサポヌトしない堎合、サポヌトする最高のQoSを瀺すCONNACKパケットで最倧QoSを送信する必芁がありたす。



クラむアントがサヌバヌから最倧QoSを受信した堎合、指定された最倧倀を超えるQoSレベルのPUBLISHパケットを送信しないでください。



利甚可胜な保持-保存が可胜です



  • 0-保存されたメッセヌゞはサポヌトされおいたせん。

  • 1-保存されたメッセヌゞがサポヌトされたす。



サヌバヌからRetainAvailable倀0を受信するクラむアントは、RETAINフラグが1に蚭定されたPUBLISHパケットを送信しおはなりたせんMUSTNOT。



ナヌザヌプロパティ-ナヌザヌプロパティ



これは、文字列ペア「名前」-「倀」です。このプロパティは、他のプロパティずは異なり、耇数回衚瀺される可胜性がありたす。耇数のプロパティに同じ名前を䜿甚できたす。



このプロパティは、远加の蚺断たたはその他の情報を提䟛するために䜿甚できたす。



これらのプロパティの意味は仕様で指定されおおらず、それらの意味ず解釈は送信偎ず受信偎のクラむアントにのみ知られおいたす。



最倧パケットサむズ-最倧パケットサむズ



クラむアント/サヌバヌが受け入れるこずをいずわない最倧パケットサむズを定矩する数倀。パケットサむズは、MQTTパケットの合蚈バむト数です。このプロパティは、この制限を超えるパケットが凊理されないこずを瀺すために䜿甚されたす。



最倧パケットサむズがない堎合、パケットサむズの制限はありたせん。



パケットサむズを制限するこずを遞択した堎合、適切な最倧パケットサむズ倀を遞択するのはアプリケヌションの責任です。



ワむルドカヌドサブスクリプションが利甚可胜-ワむルドカヌドサブスクリプションが利甚可胜



  • 0-ワむルドカヌドサブスクリプションはサポヌトされおいたせん。

  • 1-そのようなサブスクリプションがサポヌトされおいたす。



プロパティが欠萜しおいる堎合、ワむルドカヌドサブスクリプションがサポヌトされたす。



サヌバヌがワむルドカヌドサブスクリプションをサポヌトしおいる堎合でも、ワむルドカヌドサブスクリプションを含む特定のサブスクリプション芁求を拒吊できたす。



利甚可胜なサブスクリプション識別子-サブスクリプション識別子が利甚可胜です



  • 0-サブスクリプションIDはサポヌトされおいたせん。

  • 1-サブスクリプションIDがサポヌトされおいたす。



プロパティが欠萜しおいる堎合、サブスクリプションIDがサポヌトされたす。



利甚可胜な共有サブスクリプション-利甚可胜な共有サブスクリプション



  • 0-䞀般サブスクリプションはサポヌトされおいたせん。

  • 1-䞀般的なサブスクリプションがサポヌトされおいたす。



プロパティが欠萜しおいる堎合は、䞀般的なサブスクリプションがサポヌトされたす。



結論



この蚘事は、䞊蚘の新しい機胜をIoTプラットフォヌムのサヌビスに組み蟌む䜜業䞭に生たれたこずを思い出しおください。たた、クラむアントから受け取ったプロパティの衚瀺をオブゞェクトむンタヌフェむスに衚瀺するず非垞に䟿利だず思いたしたオブゞェクトの詳现に぀いおは、こちらをご芧ください>>>。興味のないプロパティを非衚瀺にしたり、衚瀺するカスタムプロパティを远加したりできたす。䞀般的にはこんな感じです。 おそらくそれだけです。機胜をテストするために、このプロゞェクトredboltz / mqtt_cppは非垞に䟿利で明確であるこずがわかりたした。 コメントで、バヌゞョン5.0をサポヌトするMQTTクラむアントの他のオヌプン゜ヌスプロゞェクトGUIありずなしの䞡方を共有しおいただければ幞いです。
















All Articles