Шаблон для обработки доставки сообщений в приложениях IoT, когда он не в сети 24/7 - PullRequest
0 голосов
/ 03 мая 2020

Я хочу разработать приложение IoT, использующее Python, которое работает на судах и время от времени отправляет данные, когда доступно сетевое соединение. Это происходит примерно в 10% случаев.

Имеется ли какой-либо шаблон / реализация, которая обрабатывает именно этот вариант использования? Я уже читал о MQTT и RabbitMQ / AMQP, но реализации ожидают, что клиент достигает брокера во время отправки сообщения. Что мне нужно, это какой-то тип локального сопротивления, который создает локальную очередь и отправляет сообщения при обнаружении соединения.

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

1 Ответ

0 голосов
/ 06 мая 2020

Шаблон, который вы ищете, уже реализован в стандартном клиенте PAHO MQTT как часть потока качества обслуживания (QOS). Все, что вам нужно сделать, это вызвать метод 'publi sh' с параметром 'qos', равным 2. Каркас позаботится обо всем остальном за вас и автоматически буферизует сообщения, пока соединение не станет доступным.

Однако следует обратить внимание на 2 момента: - буфер является буфером в памяти, то есть в случае сбоя питания все сообщения будут потеряны. Если сообщения не могут быть потеряны в таком сценарии, вам необходимо реализовать постоянное хранение сообщений в локальном файле / базе данных.

  • В качестве буфера в памяти он ограничен общим объемом доступной памяти для ваш python код. Таким образом, для очень большого количества сообщений или размера сообщения, возможно превышающего доступную память, вам также потребуется реализовать постоянное локальное хранилище.
...