Как вновь подключенный клиент получает старые сообщения в AWS IOT - PullRequest
0 голосов
/ 13 декабря 2018

Довольно простой сценарий.

Сообщение публикуется по теме (через главное устройство), на которую в настоящий момент не подписаны клиенты.Я надеюсь, что опубликованные сообщения могут иметь пользовательское время истечения.

Так что, скажем, в течение этого срока клиент теперь подключается к этой теме.Как этот клиент получит сообщение, опубликованное ранее?

Что я надеюсь получить в качестве ответа, если это возможно, и если да, то, что AWS IOT обеспечивает для достижения того же.

1 Ответ

0 голосов
/ 13 декабря 2018

С любым стандартным брокером MQTT

Вы должны соединить клиента с брокером, используя флаг clean_session как False , чтобы после этого брокер поддерживал ваше состояние с помощьюсам.

См. это: - https://www.hivemq.com/blog/mqtt-essentials-part-7-persistent-session-queuing-messages/

Этот документ выполнит все ваши запросы.

ПРИМЕЧАНИЕ:

В соответствии со стандартной спецификацией MQTT вышеупомянутые правила должны соблюдаться посредником MQTT, но посредник AWS-IoT не следует этому.

Посредник сообщений AWS-IoT не поддерживает постоянные сеансы (соединения установленыс флагом cleanSession, установленным в false).Брокер сообщений IoT AWS предполагает, что все сеансы являются чистыми, а сообщения не сохраняются между сеансами.Если клиент MQTT попытается подключиться к брокеру сообщений IoT AWS с параметром cleanSession, для которого установлено значение false, клиент будет отключен.

Возможное решение:

AWS-IoTпредоставляет что-то похожее на флаг cleansession, используя функциональность DeviceShaddow. Тени устройства AWS

...