TsgcWSPClient_MQTT | MQTT トピック

トピック

MQTT では、トピックとはブローカーが各接続クライアントのメッセージをフィルタリングするために使用する UTF-8 文字列を指します。トピックは 1 つ以上のトピックレベルで構成されます。各トピックレベルはスラッシュ(トピックレベルセパレーター)で区切られます。

 

myHome / groundfloor / livingroom / temperature

 

メッセージキューと比較して、MQTT トピックは非常に軽量です。クライアントはパブリッシュやサブスクライブの前に目的のトピックを作成する必要がありません。ブローカーは事前の初期化なしに各有効なトピックを受け入れます。各トピックには少なくとも1文字が含まれている必要があり、トピック文字列には空白が許可されます。トピックは大文字と小文字を区別します。

 

 

ワイルドカード

クライアントがトピックをサブスクライブするとき、公開されたメッセージの正確なトピックをサブスクライブするか、ワイルドカードを使用して複数のトピックに同時にサブスクライブできます。ワイルドカードはトピックのサブスクライブにのみ使用でき、メッセージの公開には使用できません。2 種類のワイルドカードがあります: _単一レベルと _マルチレベル。

 

シングルレベル: +

名前が示すように、シングルレベルのワイルドカードはトピックレベルを 1 つ置き換えます。プラス記号はトピックのシングルレベルのワイルドカードを表します。

 

myHome / groundfloor / + / temperature

 

ワイルドカード付きの単一レベルのサブスクリプションは、ワイルドカードの代わりに任意の文字列を含む任意のトピックと一致します。例えば _myhome/groundfloor/+/temperature へのサブスクリプションは次の結果を生成できます:

 

YES => myHome / groundfloor / livingroom / temperature

YES => myHome / groundfloor / kitchen / temperature

NO => myHome / groundfloor / livingroom / brightness

NO => myHome / firstfloor / livingroom / temperature

NO => myHome / groundfloor / kitchen / fridge / temperature

 

マルチレベル: #

マルチレベルのワイルドカードは多くのトピックレベルをカバーします。ハッシュ記号はトピックのマルチレベルのワイルドカードを表します。ブローカーがどのトピックが一致するかを判断するために、マルチレベルのワイルドカードはトピックの最後の文字として配置され、スラッシュの後に続く必要があります。

 

myHome / groundfloor / #

 

YES => myHome / groundfloor / livingroom / temperature

YES => myHome / groundfloor / kitchen / temperature

YES => myHome / groundfloor / kitchen / brightness

NO => myHome / firstfloor / kitchen / temperature

 

クライアントがマルチレベルワイルドカードを使用してトピックにサブスクライブすると、ワイルドカード文字の前のパターンで始まるすべてのトピックのメッセージを、トピックの長さや深さに関係なく受信します。マルチレベルワイルドカードのみをトピックとして指定した場合(_#)、MQTTブローカーに送信されるすべてのメッセージを受信します。