Я пытаюсь получить какую-то особую форму QOS от MQTT для прерывистых соединений, и мне интересно, может ли мой вариант использования быть реализован чисто с протоколом. Мне нужно подключить клиента к брокеру по ненадежному каналу с низкой пропускной способностью.
Когда клиент повторно подключается, я хочу, чтобы он узнал о том, что произошло, когда он был выключен, поэтому я думаю, что мне нужны постоянные сеансы.
Но если полезная нагрузка по заданной теме изменяется в десятки раз, пока клиент выключен, я хочу получить только последнюю версию, а не 11 устаревших.
Если полезная нагрузка по заданной теме не изменилась, пока клиент был отключен, я не хочу, чтобы она повторно отправлялась при повторном подключении.
Насколько я понимаю, сообщение QOS1 будет доставлено в постоянный сеанс, как только он повторно подключится, но клиент также получит 11 устаревших сообщений, в дополнение к единственной последней версии, которая ему нужна.
Я также понимаю, что сохраненное сообщение QOS0 будет отправлено только в чистый сеанс, а не в повторный постоянный сеанс, который, возможно, уже получил сообщение по этой теме.
Если я использую чистые сеансы с сохраненными сообщениями QOS0, клиент получит только последнюю версию каждой темы при подключении, но посредник также повторно отправит темы, полезная нагрузка которых не изменилась при отключенном соединении, что не является приемлемая полоса пропускания.