プロトコル・バイナリ形式

MQTTトピックマッチング行ごとに理由を確認

購読フィルターを1つ、公開トピックを1行に1つ入力し、バージョンと配信場面を選びます。

MQTTトピックマッチング

購読トピックフィルター

公開トピック一覧

行ごとの照合結果

フィルターとトピックはこのブラウザー内で処理します。ブローカーに接続しません。

プロトコルと配信の設定

+は1階層全体、#は最後の階層全体だけです。公開名にワイルドカードは使えません。

フィルター1つと最大1,000行。空行だけを飛ばし、空白と空階層は残します。

フィルターとトピックを入力してください。

発行できているのに購読側へ届かないとき、MQTTトピックマッチングで階層の数、大文字と小文字、先頭のスラッシュや$付きシステムトピックを確認できます。トピック名を勝手に正規化せず、ずれた箇所を示します。

複数のトピックを一度に照合し、フィルターが一致するかと、既存の保持メッセージが新しい購読へ届くかを分けて見ます。MQTT 5の共有サブスクリプションでは、この2つの答えが異なることがあります。 英語のTopic Matcherに相当する確認です。

MQTTトピックマッチングを使う理由

一致判定と初回配信を別々に見られます。

ワイルドカードの境界が分かる

MQTTトピックマッチングは+がちょうど1階層を占め、末尾の#が親階層にも一致することを行ごとに示します。空の階層や$付きトピックも消さずに扱います。

分岐したトピック階層で、単一階層の経路と親から子までの経路が別々に示される図

保持メッセージの配信を切り分ける

同じ保存済みトピックは通常購読にも共有購読にも規則上は一致します。ただしMQTT 5の共有グループへ新たに参加しても、以前の保持メッセージは再送されません。

保存済みトピックに二つの購読経路が一致し、通常購読だけが古い保持メッセージを受け取る図

購読前に確かめる三つの点

01

綴りをそのまま貼る

実際に発行した名前を1行ずつ入力します。大文字小文字、空白、先頭や末尾のスラッシュ、空階層には意味があります。長さゼロの区切り行だけを飛ばします。

  • ワイルドカード例でsensors//temperatureと+の関係を確かめられます。
02

版と時点を選ぶ

MQTT 5では$share/グループ/フィルターを共有購読として解析します。3.1.1では標準機能ではありません。保持モードは新規購読時に既存メッセージが届くかだけを問います。

  • 共有例を選ぶとMQTT 5と保持モードが一緒に設定されます。
03

最初の不一致を見る

不一致なら何階層目でずれたかを表示します。共有保持行では規則の一致と初回再送なしを別に示します。入力変更後は古い結果のコピーと保存を無効にします。

  • 自動テストを切るとCtrl/Cmd+Enterで実行できます。

フィルターの動きを行単位で確認

階層どおりのワイルドカード

MQTTワイルドカードの+は1階層、#は末尾で親を含む残りの階層に一致します。一般的なglobの*や?を特別扱いしません。

複数トピックの比較

1つのトピックフィルターで最大1,000行を検査。元の行番号を保ち、単なる不一致と無効な公開名を分けて集計します。

共有サブスクリプションの版差

MQTT 5では$share/グループ/を除いた内部フィルターで照合。3.1.1では文字どおりの階層として扱い、独自拡張を推測しません。

予測できる範囲とできない範囲

公開名にはワイルドカードを使わない
+と#は購読フィルターの完全な階層にだけ使えます。#は最後に置きます。公開トピックに含まれれば無効です。先頭ワイルドカードも$SYSには一致しません。
共有購読はMQTT 5の標準
3.1.1モードの$shareは普通の文字列として照合します。ブローカーごとの3.1.1拡張や共有グループ内の配送先は予測しません。
保持モードは新規購読時だけ
既存の保持メッセージが初回に届くかを見ます。通常のMQTT 5購読はRetain Handling 0を仮定し、QoS、再接続、削除や将来の発行は再現しません。
ブローカー検証の代わりにはならない
MQTTトピックマッチングは接続やACL検査を行いません。規則が一致しても、実際の購読が許可され配信された証拠にはなりません。

MQTTトピックマッチングのよくある疑問

ワイルドカード購読はパフォーマンスを低下させますか?

このページは一致規則だけを計算し、ブローカーの検索性能や負荷を測定しません。実際の影響は購読数とブローカー実装で確認してください。

通常トピックとワイルドカードトピックを重複購読したらどう届きますか?

ここでは1回に1つのフィルターだけを照合します。複数購読での配信数、QoSやセッション状態は対象外なので、実際のブローカーで試してください。

共有サブスクリプションと通常購読で同じトピックを使えますか?

どちらのフィルターにも一致し得ます。ただしMQTT 5の共有購読へ新しいメンバーが入っても、保存済みの保持メッセージは初回再送されません。

MQTTトピックの長さと階層数には上限がありますか?

独立した階層数の上限はありませんが、1つの名前やフィルターはUTF-8で65,535バイトまでです。この画面はさらに最大1,000行を受け付けます。

topic nameとtopic filterはどう使い分けますか?

発行側のtopic nameは具体的な宛先で、+や#を含められません。購読側のtopic filterだけがワイルドカードで複数の名前に一致できます。

一致しない理由がまだ不明ですか?

MQTTトピックマッチングを試す

MQTTトピックマッチングに実際のフィルターとトピック一覧を入れ、保存済みメッセージの初回配信を調べるときだけ保持モードへ切り替えてください。

照合処理はブラウザー内だけで行います。