Topic Names
A topic name is an UTF-8 string containing one or more levels separated by a forward slash character (/
). A topic name must not contain any wildcard characters (+
and #
)! Topic names are usabe both in publish and subscribe operations.
Example topic names:
Topic Name |
---|
topic |
topic name |
multi/level/topic |
multi/level/topic/ |
/multi/level/topic/ |
/ |
Topic Filters
Wildcard characters can be used in topic filters to match one or more levels within a topic. MQTT has two types of wildcard characters a Single-level wildcard (+
) and a Multi-level wildcard (#
).
Single-level wildcard
A single-level wildcard can be used to match one level and multiple single-level wildcards can be used in one topic filter.
Topic Filter | Matching topics | Non-matching topics |
---|---|---|
+ |
finance |
|
/+ |
/finance |
|
+/+ |
/finance |
|
sport/+ |
sport/ |
sport |
sport/tennis/+ |
sport/tennis/player1 |
sport/tennis/player1/ranking |
sport/tennis/player2 |
Multi-level wildcard
A multi-level wildcard (#
) can be used to match any level in a topic name. #
matches its parent level and any number of child levels. When #
is used it must be the last character of the topic filter.
Topic Filter | Matching topics |
---|---|
sport/# |
sport |
sport/tennis/player1/# |
sport/tennis/player1 |
sport/tennis/player1/ |
|
sport/tennis/player1/ranking |
|
sport/tennis/player1/score/wimbledon |
Mixed topic filters
Single and multi level wildcards can be used in one topic filter:
Topic Filter | Matching topics |
---|---|
+/tennis/# |
sport/tennis/player1/ranking |