Я использую клиент mosquitto mqtt.Как я могу различать события публикации MQTT, исходящие от пользователей, и внутренних сообщений, предназначенных только для трансляции
Например, у вас есть пользователи, которые публикуют и подписываются на темы. Тема фактически коррелирует с конечной точкой REsT.
Сценарий 1 (типичный паб/к югу от использования)
- UserA выписывает на тему/устройство/123/мета
- UserB публикует некоторые данные на тему/устройство/123/мета
- по определению, это издание транслируется подписчикам
- У нас есть сценарий, подписанный на/devices/#, который знает, как сохранить полезную нагрузку для темы/устройства/123/meta, когда он получает опубликованные данные. Эти данные сохраняются в базе данных.
Сценарий 2
- Кто обновляет данные/устройство/123/мета через интерфейс ReST (или прямое обновление БД, ключ это не MQTT публиковать).
- база данных обновляется
- опубликовать сообщение посылается брокеру MQTT так, что все абоненты получают обновления в качестве полезной нагрузки
Сценарий 2 является то, что я пытаюсь обернуть мой голову вокруг. Это создает неприятную петлю обратной связи. Когда внутренние сообщения транслируются, мой скрипт, чтобы иметь дело с публикацией событий от пользователей, не может отличать события публикации от стороннего пользователя или события внутренней публикации, предназначенные только для передачи некоторых данных (без сохранения необходимых данных).
Как я должен справиться с этим? Сообщение MQTT очень упрощенно, и я не нахожу ничего, из чего я могу основать логику. Я пытаюсь как-то исследовать, используя происхождение, но пока не повезло. Я понимаю, что могу писать плагины, но это довольно задача для москитов.