В настоящее время у нас есть приложение, которое управляет несколькими устройствами через MQTT. Каждое устройство подписывается на уникальную тему, названную по имени своего идентификатора устройства. Например, устройство A имеет идентификатор устройства 123, поэтому оно будет подписано на тему 123. Затем, если приложение захочет опубликовать управляющее сообщение на устройство A, оно опубликует тему с именем 123, которая является идентификатором устройства устройства A.Как опубликовать сообщение конкретному клиенту в Mosquitto MQTT
Таким образом, если у нас 1000 устройств, у нас будет 1000 тем. Это очень плохой дизайн. Поэтому мы думаем, что, возможно, мы можем опубликовать тему для конкретного клиента, установив идентификатор клиента, который получит тему, поскольку каждый клиент, который подключается к брокеру, должен будет установить идентификатор клиента. Однако мы не нашли никакого метода, который позволяет публиковать конкретный клиент. И похоже, что MQTT не справляется с такой вещью. Он публикует только подписчиков на эту тему.
Итак, есть ли какой-либо другой способ, который мы можем сделать для достижения одной темы, но все же в состоянии публиковать сообщения для конкретных клиентов?
Спасибо!
«Это действительно плохой дизайн». Почему ты так думаешь? Темы дешевы. 1000 тем не будут потреблять 1000x памяти. –
@PavelZdenek Действительно? Я просто так думал, потому что думаю, что на память уйдет много памяти, если появится больше устройств. Конечно, 1000 - действительно небольшое количество, но что, если миллионы или даже больше. Хотя я не уверен в этом. –
Ну, если вы подпишете миллионы устройств одному брокеру, это наверняка «займет много памяти». Но специфичность темы - это лишь небольшая часть памяти. Масштабируемость решается кластерами/мостами брокеров, а не с использованием неспецифических тем. Если вы планируете такую крупномасштабную операцию, вы должны начать создавать разделы или «коды областей» перед вашими клиентами. –