Обработка обратной передачи данных в клиенте mqtt
На нашем облачном сервере установлен москитный брокер. Наш шлюз отправляет данные с помощью клиента MQTT с сигналом 2G. Мы наблюдаем потерю данных в нескольких сценариях.
Когда шлюз отключен от Интернета, мы помещаем сообщения в шлюз на несколько дней. Когда он снова попадает в Интернет, он начинает передавать данные в брокер с двумя потоками: один - для сообщений в реальном времени, другой - для сообщений в очереди. Мы получаем ACK обратного вызова для каждого сообщения, но мы теряем некоторые сообщения на стороне сервера.
Как мы можем быть уверены, что все созданные сообщения будут обработаны в брокере?
Как мы обрабатываем посылку сообщений в шлюзе? Один из вариантов - задержать отправку каждого сообщения в очереди на несколько миллисекунд (чтобы избежать того, чтобы все они пытались связаться с брокером сразу.
Мы используем уровень QoS 1 для нашего издателя / подписчика и хотим продолжать использовать уровень QoS 1.