Pretty simple scenario.
A message gets published on a topic (by a master device), to which no clients are currently subscribed. I am hoping messages published can have a custom expiry time.
So say within this expiry time, a client now connects to this topic. How would this client receive the message published earlier?
What i am hoping to get as an answer, if it is possible and if so, what does AWS IOT provide to achieve the same.
Overall, above answer of @sanket has been true, with one change as follows:
Right now, AWS IoT supports MQTT persistent sessions. Please see following relevant snippet from AWS.
"Persistent sessions store subscription information and pending Quality of Service (QoS) 1 messages in case your devices become disconnected. When a device reconnects, its persistent session resumes and its subscriptions are automatically reinstated. Also, any stored messages are delivered."
Moreover, "Persistent sessions have a default expiry period of one hour. The expiry period begins when the message broker detects that a client disconnects (MQTT disconnect or timeout)."
Reference - How does a newly connected client get old messages in AWS IOT
With Any Standard MQTT Broker
You should connect the client with the broker using clean_session flag as False so that after this the broker will maintain your state with itself.
Refer this:- https://www.hivemq.com/blog/mqtt-essentials-part-7-persistent-session-queuing-messages/
This document will fulfill your all queries.
NOTE:
As per standard MQTT spec, above-mentioned rules should be followed by MQTT broker but AWS-IoT broker does not follow this.
AWS-IoT message broker does not support persistent sessions (connections made with the cleanSession flag set to false). The AWS IoT message broker assumes all sessions are clean sessions and messages are not stored across sessions. If an MQTT client attempts to connect to the AWS IoT message broker with the cleanSession set to false, the client will be disconnected.
Possible Solution:
AWS-IoT provides something similar to cleansession flag using DeviceShaddow functionality. AWS Device Shadows
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With