Как заставить MQTT хранить сообщения, даже если в данный момент нет подписчика? - PullRequest
1 голос
/ 27 июня 2019

В MQTT, если вы публикуете тему, на которую подписчик не подписан, сообщение отбрасывается.

Хотя это хорошо для классического обмена сообщениями в пабах / подчиненных сообщениях, оно не так уж хорошо для общих подписок (которые были введены в MQTT 5), так как этот шаблон обычно используется для какой-то очереди заданий, и вы обычно не хотите отбрасывать задания только потому, что там сейчас нет рабочего (возможно, он просто вышел из строя и перезапускается).

Можно ли указывать серверам MQTT не удалять сообщения, по крайней мере для общих подписок, даже если в данный момент нет подписчиков?Если да, то как?

PS: Это не просто постоянный сеанс, так как я не хочу сохранять подписки для каждого клиента.Это больше похоже на «постоянный сеанс», который охватывает несколько клиентов.

1 Ответ

0 голосов
/ 27 июня 2019

Я не знаю, поддерживает ли это какой-либо из брокеров, поддерживающих общие подписки MQTT v5, но я могу предвидеть, как это может работать таким образом, чтобы это соответствовало спецификации и духу сообщений паб / суб-сообщений.

MQTT-брокер будет помещать в очередь сообщения для тем, на которые подписан QOS 1 или 2, для клиента, который в данный момент находится в автономном режиме, с постоянным сеансом.Поэтому я не вижу причин, почему общие подписки должны быть другими.Я могу видеть, что это может быть немного более технически сложным для реализации, но должно быть возможно (вам нужно будет рассматривать общую группу как один сеанс).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...