Bird
Raised Fist0
IOT Protocolsdevops~10 mins

Retained messages in IOT Protocols - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Retained messages
Client publishes message with retain flag
↓
Broker stores message as retained
↓
New client subscribes to topic
↓
Broker sends retained message immediately
↓
Client receives last retained message
↓
Client processes message
When a client sends a message with the retain flag, the broker saves it. New subscribers get this saved message right away.
Execution Sample
IOT Protocols
PUBLISH topic='home/temp' payload='22C' retain=true
SUBSCRIBE topic='home/temp'
RECEIVE message='22C' (retained)
Client publishes a retained message; new subscriber immediately receives it.
Process Table
StepActionTopicPayloadRetain FlagBroker StateClient Output
1Client publishes messagehome/temp22CtrueStores '22C' as retained for 'home/temp'None
2New client subscribeshome/tempN/AN/ARetained message existsSends retained message '22C'
3Client receives messagehome/temp22CretainedNo changeReceives '22C' immediately
4Client processes messagehome/temp22CretainedNo changeProcesses '22C'
5No new messagesN/AN/AN/ANo changeNo further output
💡 No new messages published; retained message delivered to subscriber; process ends.
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
Broker Retained Message for 'home/temp'None'22C''22C''22C''22C'
Client OutputNoneNone'22C' sent'22C' received'22C' processed
Key Moments - 3 Insights
Why does the new subscriber get the message immediately even though it was published before?
Because the broker saved the message as retained (see Step 1 and Step 2 in execution_table), it sends it instantly to new subscribers.
What happens if a message is published without the retain flag?
The broker does not save it, so new subscribers won't get any previous message immediately (not shown here, but inferred from Step 1 retain flag).
Does the retained message get deleted after sending to a new subscriber?
No, the broker keeps the retained message until a new retained message replaces it or it is cleared (see Broker State in variable_tracker).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the broker's retained message after Step 1?
A'22C'
BNone
C'22F'
DEmpty string
💡 Hint
Check the 'Broker State' column at Step 1 in the execution_table.
At which step does the client receive the retained message?
AStep 2
BStep 3
CStep 1
DStep 4
💡 Hint
Look at the 'Client Output' column to see when the message is received.
If the retain flag was false in Step 1, what would change in the execution table?
ABroker would store the message as retained
BClient would receive the message immediately on subscription
CBroker would not store the message; new subscriber gets no immediate message
DClient output would be '22C' processed at Step 4
💡 Hint
Refer to the 'Retain Flag' and 'Broker State' columns in Step 1 and Step 2.
Concept Snapshot
Retained messages:
- Client publishes with retain=true
- Broker saves last message per topic
- New subscribers get saved message immediately
- Retained message stays until replaced or cleared
- Useful for last known state delivery
Full Transcript
Retained messages in IoT protocols work by having a client send a message with a retain flag set to true. The broker then saves this message as the last known message for that topic. When a new client subscribes to the topic, the broker immediately sends the saved retained message to the client. This ensures the new subscriber gets the latest state without waiting for a new message. The retained message remains stored until a new retained message replaces it or it is cleared. This mechanism helps devices know the last known value instantly upon subscription.

Practice

(1/5)
1. What is the main purpose of a retained message in MQTT?
easy
A. To delete all messages from the broker
B. To store the last message on a topic for new subscribers
C. To encrypt messages during transmission
D. To limit the message size to 256 bytes

Solution

  1. Step 1: Understand retained message concept

    Retained messages keep the last message sent on a topic stored on the broker.
  2. Step 2: Identify the purpose for new subscribers

    New subscribers receive the last retained message immediately upon subscribing, ensuring they have the latest state.
  3. Final Answer:

    To store the last message on a topic for new subscribers -> Option B
  4. Quick Check:

    Retained message = last stored message [OK]
Hint: Retained means broker keeps last message for new subscribers [OK]
Common Mistakes:
  • Confusing retained messages with message encryption
  • Thinking retained messages delete old messages
  • Assuming retained messages limit message size
2. Which MQTT publish option must be set to true to create a retained message?
easy
A. retain
B. qos
C. cleanSession
D. willFlag

Solution

  1. Step 1: Identify publish options related to message retention

    The retain flag controls whether the broker stores the message as retained.
  2. Step 2: Confirm correct flag for retention

    Setting retain=true tells the broker to keep the message for future subscribers.
  3. Final Answer:

    retain -> Option A
  4. Quick Check:

    retain flag true = retained message [OK]
Hint: Set retain flag true to keep message on broker [OK]
Common Mistakes:
  • Confusing retain with cleanSession flag
  • Using qos instead of retain for message storage
  • Mistaking willFlag for retention control
3. Given the following MQTT publish code snippet, what will a new subscriber receive immediately after subscribing to topic home/temperature?
client.publish('home/temperature', '22°C', retain=True)
client.publish('home/temperature', '23°C', retain=False)
medium
A. The message '22°C' because it was retained
B. The message '23°C' because it was the last published
C. No message because retain is false on last publish
D. Both messages '22°C' and '23°C'

Solution

  1. Step 1: Analyze retained flag on each publish

    The first message '22°C' is published with retain=True, so it is stored on the broker.
  2. Step 2: Understand effect of second publish with retain=False

    The second message '23°C' is published without retain, so it is sent but not stored as retained. Importantly, publishing with retain=False on the same topic clears the retained message.
  3. Step 3: Determine what new subscribers receive

    New subscribers get no retained message because the last retained message was cleared by the second publish.
  4. Final Answer:

    No message because retain is false on last publish -> Option C
  5. Quick Check:

    Retain=False on last publish clears retained message [OK]
Hint: Retain=False on last publish clears retained message [OK]
Common Mistakes:
  • Assuming last published message is always retained
  • Thinking retain=False messages overwrite retained messages
  • Expecting multiple retained messages per topic
4. You want to clear a retained message on topic device/status. Which publish command will correctly clear it?
medium
A. client.publish('device/status', '', retain=True)
B. client.publish('device/status', '', retain=False)
C. client.publish('device/status', None, retain=True)
D. client.publish('device/status', None, retain=False)

Solution

  1. Step 1: Understand how to clear retained messages

    Publishing an empty payload with retain=True clears the retained message on that topic.
  2. Step 2: Analyze the options

    Publishing with retain=False does not update or clear the retained message. Using None as payload is invalid. Only publishing an empty string ('') with retain=True clears the retained message.
  3. Final Answer:

    client.publish('device/status', '', retain=True) -> Option A
  4. Quick Check:

    Empty payload + retain=True clears retained message [OK]
Hint: Publish empty message with retain=True to clear retained message [OK]
Common Mistakes:
  • Using retain=False when trying to clear retained message
  • Sending None as payload which causes error
  • Expecting retain=False to remove retained message
5. You have multiple IoT devices publishing their status to devices/+/status with retained messages. A new device subscribes to devices/device123/status. What will it receive and why?
hard
A. It receives only non-retained messages published after subscription
B. It receives all retained messages from all devices under devices/+/status
C. It receives no messages until a new status is published
D. It receives the last retained status message for device123 immediately

Solution

  1. Step 1: Understand MQTT wildcard subscription

    The subscription to devices/device123/status matches only that specific topic, not all devices.
  2. Step 2: Understand retained message delivery

    The broker sends the last retained message on that exact topic immediately upon subscription.
  3. Step 3: Determine what the new device receives

    The new device receives the last retained status message for device123 immediately, not messages from other devices.
  4. Final Answer:

    It receives the last retained status message for device123 immediately -> Option D
  5. Quick Check:

    Retained message sent on exact subscribed topic [OK]
Hint: New subscriber gets last retained message on exact topic [OK]
Common Mistakes:
  • Thinking wildcard subscription delivers all retained messages
  • Expecting no retained messages on subscription
  • Confusing retained with non-retained message delivery
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