Клиенту и Серверу необходимо сохранять состояние Сеанса, чтобы должным образом обеспечивать необходимый уровень качества обслуживания (QoS). Клиент и Сервер ДОЛЖНЫ сохранять состояние Сеанса на протяжении всего Сеанса [MQTT-7.1.0-1]. Сеанс ДОЛЖЕН длиться как минимум до тех пор, пока активно сетевое соединение [MQTT-7.1.0-2].
Сохраненные сообщения не являются частью сохраненного состояния Сеанса на Сервере. Серверу СЛЕДУЕТ сохранять такие сообщения, пока их не удалит Клиент.
Примечания
1 Объем хранилищ Клиента и Сервера, конечно, ограничен. Сами хранилища могут быть объектами политик администрирования, например, в части максимального времени хранения состояния Сеанса между повторным установлением сетевого соединения. Сохраненное состояние Сеанса может быть аннулировано в результате действий администратора, включая автоматический ответ на определенные условия. Это приводит к завершению Сеанса. Данные действия могут быть вызваны ограничениями ресурсов или другими операционными причинами. Будет разумным оценить возможности хранилищ Клиента и Сервера, чтобы гарантировать их достаточность.
2 Сбои в аппаратном или программном обеспечении могут привести к потере или повреждению состояния Сеанса, сохраненного Клиентом или Сервером.
3 При нормальном функционировании Клиента или Сервера причиной потери или повреждения сохраненного состояния Сеанса могут стать действия администратора, сбой программного или аппаратного обеспечения. Действия администратора могут быть автоматическим ответом на определенные условия. Данные действия могут быть вызваны ограничениями ресурсов или другими операционными причинами. Например, Сервер может определить, что, согласно внешней информации, сообщение или сообщения больше не могут доставляться текущему или будущему Клиенту.
4 Пользователи протокола MQTT должны оценивать возможности хранилищ тех или иных реализаций Клиента и Сервера, для должного обеспечения их собственных нужд.
Примеры
1 Например, пользователь, желающий собрать показания счетчиков электроэнергии, может решить, что ему необходимо использовать сообщения QoS 1, поскольку он должен защитить показания от потери по сети, однако он может определить, что источник питания достаточно надежный, чтобы данные у Клиента и Сервера могли храниться в энергозависимой памяти без особого риска потери.
2 И, наоборот, создатель приложения по оплате парковки может решить, что платежное сообщение не может быть потеряно ни при каких обстоятельствах, поэтому требуется, чтобы все данные были записаны в энергонезависимой памяти до того, как они будут переданы по сети.