2016-03-01 4 views
0

Это вопрос новичка Я уверен, но используя Mosquitto, как я могу подписаться на сохраненное сообщение и гарантировать, что я получаю сообщение только один раз? У меня есть Java-подписчик на основе Paho, и при тестировании того, что я замечаю, если мой абонент сбит, а затем перезагрузите его, он достает некоторые из тех же сообщений, которые он получил до того, как он спустился. (Обычно это оставалось бы навсегда, но все происходит.) И очень важно, чтобы подписчик получал каждое сообщение только один раз. (Для моего случая использования есть только 1 подписчик.)С брокером Mosquitto, как подписаться на тему и получить какое-либо сообщение только один раз

Есть ли что-то встроенное в Mosquitto, которое предоставляет этот механизм, или это что-то, что мне нужно, чтобы встроить в мою схему данных и процесс поиска?

Я вижу, что есть способ удалить сообщение по теме (https://lists.launchpad.net/mosquitto-users/msg00067.html), но сейчас мои темы довольно общие [Компания]/[MAC-адрес]/[Тема x], и на двух возможных сообщениях можно очередь с той же темой, и я предполагаю, что если я отправлю пустое сообщение в данную тему, я в конечном итоге удалю все сообщения указанной темы.

Заранее благодарим за помощь.

ответ

1

установить уровень QoS как 2.

QoS уровня-2: Точно однократную доставку. Это самый высокий уровень, который также накладывает большую часть перехвата головных сообщений управляющих сообщений и необходимость локального хранения сообщений. Точно-один раз представляет собой комбинацию гарантированности доставки как минимум один раз и по крайней мере один раз.

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

  • Нет связанных вопросов^_^