2016-08-13 5 views
1

Мой издатель и брокер работают в разных системах. У издателя есть локальная БД, в которой хранятся новые исходящие сообщения. Я хочу спросить. Возможно, есть синхронизация между локальной базой данных издателя с брокерской БД (mosquitto.db), когда издатель потерял связь с брокером, а затем брокер автоматически отправит эти сообщения подписчику, если абонент подключился к брокеру или при подключении к маклер.Синхронизация Между издателем db и mosquitto broker db mqtt

ответ

0

Магазин mosquitto.db предназначен исключительно для брокера Mosquitto для сохранения внутреннего состояния, в том числе, у клиентов есть постоянные сеансы и любые сообщения в очереди для этого клиента. Нет доступа к нему нигде.

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

Обратный вызов клиента paho имеет метод (deliveryComplete()), который вызывается, когда сообщение оставило контроль над клиентом (это эффективно, когда он достиг брокера для QOS 1 или 2). При отправке сообщения, вы должны выполнить следующие действия:

  1. магазина любого новое сообщение издателей локальной базы данных
  2. Попробуйте отправить его брокеру
  3. Удалите его (или пометить его опубликовано) из базы данных при вызывается deliveryComplete.

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

Смежные вопросы