Мой издатель и брокер работают в разных системах. У издателя есть локальная БД, в которой хранятся новые исходящие сообщения. Я хочу спросить. Возможно, есть синхронизация между локальной базой данных издателя с брокерской БД (mosquitto.db), когда издатель потерял связь с брокером, а затем брокер автоматически отправит эти сообщения подписчику, если абонент подключился к брокеру или при подключении к маклер.Синхронизация Между издателем db и mosquitto broker db mqtt
ответ
Магазин mosquitto.db
предназначен исключительно для брокера Mosquitto для сохранения внутреннего состояния, в том числе, у клиентов есть постоянные сеансы и любые сообщения в очереди для этого клиента. Нет доступа к нему нигде.
Если издатель выходит из строя, а затем вы пытаетесь опубликовать сообщение, он будет генерировать исключение, вам решать, как разработчик поймать исключение, сохранить сообщение и попробовать и повторно отправить его позже, когда издатель переподключился к брокеру.
Обратный вызов клиента paho имеет метод (deliveryComplete()), который вызывается, когда сообщение оставило контроль над клиентом (это эффективно, когда он достиг брокера для QOS 1 или 2). При отправке сообщения, вы должны выполнить следующие действия:
- магазина любого новое сообщение издателей локальной базы данных
- Попробуйте отправить его брокеру
- Удалите его (или пометить его опубликовано) из базы данных при вызывается
deliveryComplete
.
При повторном подключении к брокеру база данных должна быть проверена на наличие непогашенных сообщений, и они должны быть опубликованы.