Функция отката в MQTT Broker после получения сообщения от Broker

У меня возникла ситуация после получения сообщения от брокера MQTT. Во время обработки данных предположим, что БД не работает и не выполнила задачу. В этой конкретной ситуации полученные данные должны быть отправлены обратно в Брокер, что моя задача не выполнена, я имею в виду откат.

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

может ли кто-нибудь помочь в этом?


person Guna ..    schedule 11.08.2020    source источник
comment
Итак, ваш абонентский узел обрабатывает записи в базу данных? Если да, то почему бы ему просто не сохранить данные и не дождаться восстановления БД? В протоколе MQTT нет функций Rollback или Recall.   -  person JD Allen    schedule 11.08.2020


Ответы (1)


Это можно сделать, но только с определенными клиентскими библиотеками MQTT, которые позволяют полностью контролировать процесс рукопожатия QOS.

Предполагая, что клиент подписался в QOS 1 или 2 на тему, он может затем выбрать удержание отправки пакета PUBACK или PUBREC обратно брокеру. Он может отложить завершение рукопожатия QOS до тех пор, пока сообщение не будет полностью обработано. Если обработка не удалась и полное рукопожатие не завершено, брокер попытается повторно доставить сообщение клиенту, поэтому в случае сбоя клиент должен отключиться, чтобы сообщение было поставлено в очередь.

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

person hardillb    schedule 11.08.2020
comment
Спасибо hardillb за ответ. Что понимают под определенными клиентскими библиотеками MQTT. нам нужно перейти на корпоративную версию Broker. В настоящее время мы используем брокера Erlang EMQ. - person Guna ..; 12.08.2020
comment
Нет, это не имело никакого отношения к брокеру. Я имею в виду, что только ограниченное число из множества различных реализаций клиентских библиотек фактически позволяет вам контролировать, как они реагируют на рукопожатие QOS, вам придется исследовать - person hardillb; 12.08.2020