Mqtt vernemq Создать потоковую передачу - PullRequest
0 голосов
/ 20 сентября 2019

Мы используем протокол MQTT для публикации и подписки сообщений через сервер VerneMQ.

Может ли кто-нибудь помочь с VerneMQ, можем ли мы выполнять потоковую передачу в очереди, как Кафка, где, если абонент отключен, а затем вернется в оперативный режим, тогда он будетв состоянии получить все старые пропущенные сообщения, которые он пропустил во время офлайн

, если VerneMQ не поддерживает потоковую передачу сообщений, то какие все опции у нас, кроме Кафки, и что хорошо

Пользовательский случай

Предположим, у меня есть 3 (A, B и C) клиента, которые по какой-то причине подписываются на одну и ту же тему. Мой клиент A - это офис. В настоящее время издатель публикует 100 сообщений, аA находится в офисе, но B и C могут получать сообщения, поэтому, если A вернется в онлайн, он сможет получить те 100 сообщений, которые публикует издатель, пока он не в сети

1 Ответ

1 голос
/ 20 сентября 2019

MQTT - это не очередь сообщений, это паб / подсистема.

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

Для этого необходимо выполнить следующие действия:

  • Используйте фиксированный идентификатор клиента для клиента
  • Убедитесь, что флаг Clean Session установлен в false, когда клиент повторно подключается к брокеру.
  • Когда клиент подписывается на тему, он должен включать QOSбольше 0 (использование 1 может привести к тому, что некоторые сообщения будут доставлены несколько раз, 2 должны быть только один раз)

ВСЕ сообщения, опубликованные, когда клиент находится в автономном режиме, будут доставлены, получить какой-либо способокно на это со стороны клиента.В зависимости от брокера может быть возможно установить ограничение в байтах или ограничение времени для того, что хранит брокер (но это выходит за пределы спецификации MQTT, что подразумевает, что данные должны храниться вечно).(Начиная с MQTT v5 издатель сообщения может установить значение TTL, при котором сообщение будет удалено в случае его истечения)

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