Кросспост з devua.co
Протокол MQTT набирає все більшої популярності у зв’язку з поширенням і популяризацією IoT та SmartHome рішень і технологій (наприклад послуги MQTT брокера надає серед інших Amazon).
Робота з протоколом MQTT для Java розробника часто означає використання в якості MQTT клієнта FOSS бібліотеки Eclipse Paho, яка, напрклад, штатно йде з Spring Messaging.
В роботі з Paho при відправці великої кількості повідомлень за короткий проміжок часу може виникати помилка “Too many publishes in progress“, причина якої полягає в наступному: при відправці з Quality of Service більше за 0 (нуль) кожне відправлене MQTT брокеру повідомлення має бути збережене поки брокер не підтвердить отримання, і перевідправлене якщо брокер не підтвердив отримання повідомлення за якийсь період часу. Збережені непідтверджені повідомлення називаються в термінології Paho in-flight, і кількість таких повідомлень обмежена.
Звичайно, найпростішим і гарантованим способом уникнути цієї помилки є використання нульового рівня Quality of Service. Але є і інші варіанти.
Читати далі