Bird
Raised Fist0
IOT Protocolsdevops~6 mins

Wildcard subscriptions (+ and #) in IOT Protocols - Full Explanation

Choose your learning style10 modes available
Introduction
Imagine trying to listen to many different conversations at once without knowing exactly which ones will happen. Wildcard subscriptions solve this problem by letting you listen to groups of messages without specifying each one individually.
Explanation
Single-level wildcard (+)
The plus sign (+) acts as a placeholder for exactly one topic level in a subscription. It matches any single word in that position but does not cross over multiple levels. This allows you to subscribe to messages where only one part of the topic varies.
The + wildcard matches exactly one topic level in a subscription.
Multi-level wildcard (#)
The hash sign (#) matches any number of topic levels, including zero. It must be the last character in the subscription and covers all subtopics below that point. This lets you listen to an entire branch of topics without listing each one.
The # wildcard matches zero or more topic levels and must be last in the subscription.
Usage rules and placement
The + wildcard can appear anywhere in the topic filter but only replaces one level. The # wildcard can only appear at the end of the topic filter and covers all remaining levels. Using these wildcards correctly ensures you receive the intended messages without errors.
+ can be used anywhere for one level; # only at the end for multiple levels.
Practical benefits
Wildcard subscriptions reduce the need to subscribe to many individual topics. They simplify managing dynamic or large topic trees by grouping related messages. This makes it easier to handle data streams in IoT and messaging systems.
Wildcards simplify subscribing to many related topics efficiently.
Real World Analogy

Imagine you want to listen to all announcements in a building. The + wildcard is like listening to any room on a specific floor, while the # wildcard is like listening to all rooms on all floors from a certain point down.

Single-level wildcard (+) → Listening to any single room on a specific floor
Multi-level wildcard (#) → Listening to all rooms on all floors below a certain floor
Usage rules and placement → Rules about where you can stand to listen and what rooms you can hear
Practical benefits → Easier to hear many announcements without moving to each room
Diagram
Diagram
Topic Tree Example:

home
├─ kitchen
│  ├─ temperature
│  └─ humidity
├─ livingroom
│  ├─ temperature
│  └─ light
└─ garage
   └─ door

Subscriptions:

home/+/temperature  → matches home/kitchen/temperature and home/livingroom/temperature
home/#              → matches all topics under home, like home/garage/door
This diagram shows a topic tree and how + and # wildcards match different topic levels.
Key Facts
Single-level wildcard (+) → Matches exactly one topic level in a subscription filter.
Multi-level wildcard (#) → Matches zero or more topic levels and must be the last character in the filter.
Wildcard placement rule → + can appear anywhere; # only at the end of the topic filter.
Subscription filter → A pattern used to receive messages from matching topics.
Topic level → A segment of a topic name separated by slashes (/).
Common Confusions
Believing # can be used in the middle of a topic filter.
Believing # can be used in the middle of a topic filter. The # wildcard must be the last character in the subscription filter and cannot appear in the middle.
Thinking + matches multiple topic levels.
Thinking + matches multiple topic levels. The + wildcard matches exactly one topic level, not multiple levels.
Assuming wildcards match topic names themselves.
Assuming wildcards match topic names themselves. Wildcards match topic levels in subscriptions, not the actual topic names published.
Summary
The + wildcard matches exactly one topic level anywhere in the subscription filter.
The # wildcard matches zero or more topic levels but must be the last character in the filter.
Using wildcards helps efficiently subscribe to many related topics without listing each one.

Practice

(1/5)
1. What does the MQTT wildcard + represent in topic subscriptions?
easy
A. It matches zero or more topic levels.
B. It matches exactly one topic level.
C. It matches the entire topic string.
D. It matches only the last topic level.

Solution

  1. Step 1: Understand the + wildcard meaning

    The + wildcard matches exactly one topic level in MQTT subscriptions.
  2. Step 2: Compare with other wildcards

    The # wildcard matches zero or more levels, so it is different from +.
  3. Final Answer:

    It matches exactly one topic level. -> Option B
  4. Quick Check:

    + = one level [OK]
Hint: Remember: + means one level only [OK]
Common Mistakes:
  • Confusing + with # wildcard
  • Thinking + matches multiple levels
  • Assuming + matches zero levels
2. Which of the following is the correct MQTT subscription syntax to match all topics under home/kitchen including sub-levels?
easy
A. home/kitchen/#
B. home/+/kitchen
C. home/kitchen/+
D. home/#/kitchen

Solution

  1. Step 1: Identify the wildcard for all sub-levels

    The # wildcard matches all remaining topic levels, including zero or more sub-levels.
  2. Step 2: Apply to the topic home/kitchen

    Using home/kitchen/# subscribes to home/kitchen and any deeper topics like home/kitchen/temperature.
  3. Final Answer:

    home/kitchen/# -> Option A
  4. Quick Check:

    # matches all sub-levels [OK]
Hint: Use # to catch all subtopics under a path [OK]
Common Mistakes:
  • Using + instead of # for multiple levels
  • Placing # in the middle of the topic
  • Using invalid syntax like # in the middle
3. Given the subscription building/+/temperature, which of these topics will be matched?
medium
A. building/floor1/temperature
B. building/floor1/room1/temperature
C. building/temperature
D. building/floor1/humidity

Solution

  1. Step 1: Understand the + wildcard position

    The + wildcard matches exactly one topic level between building and temperature.
  2. Step 2: Check each topic against the pattern

    Topic building/floor1/temperature matches because floor1 fills the + wildcard. Others either have too many or too few levels or wrong last level.
  3. Final Answer:

    building/floor1/temperature -> Option A
  4. Quick Check:

    + matches one level only [OK]
Hint: + matches exactly one level between slashes [OK]
Common Mistakes:
  • Matching topics with extra levels
  • Ignoring the exact position of +
  • Assuming + matches zero levels
4. You wrote the subscription sensor/#/temperature but it does not work. What is the problem?
medium
A. The subscription is missing a leading slash.
B. The + wildcard should be used instead of # here.
C. The topic levels are case sensitive and must be lowercase.
D. The # wildcard must be at the end of the topic filter.

Solution

  1. Step 1: Recall the rule for # wildcard placement

    The # wildcard must be the last character in the topic filter and can only appear once.
  2. Step 2: Analyze the subscription sensor/#/temperature

    Here, # is in the middle, which is invalid syntax and causes the subscription to fail.
  3. Final Answer:

    The # wildcard must be at the end of the topic filter. -> Option D
  4. Quick Check:

    # only at end [OK]
Hint: # must be last in topic filter [OK]
Common Mistakes:
  • Placing # in the middle of topic
  • Confusing + and # usage
  • Ignoring MQTT topic syntax rules
5. You want to subscribe to all topics under office but only one level deep, such as office/room1 and office/room2, but not office/room1/temperature. Which subscription should you use?
hard
A. office/+/+
B. office/#
C. office/+
D. office

Solution

  1. Step 1: Understand the requirement for one level deep

    You want to match topics exactly one level below office, like office/room1.
  2. Step 2: Choose the correct wildcard

    The + wildcard matches exactly one level, so office/+ matches office/room1 but not office/room1/temperature.
  3. Final Answer:

    office/+ -> Option C
  4. Quick Check:

    One level deep = use + wildcard [OK]
Hint: Use + for exactly one sub-level [OK]
Common Mistakes:
  • Using # which matches all levels
  • Using multiple + wildcards incorrectly
  • Not including any wildcard
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard