Bosh sahifa Wiki Retained message

Retained message

Retained message — MQTT broker topic uchun saqlab qoladigan va yangi subscriberga subscription o‘rnatilishi bilan darhol yuboradigan so‘nggi retained xabardir. Publisher PUBLISH paketida RETAIN flagini yoqadi. Broker shu topicdagi oldingi retained qiymatni yangisiga almashtiradi; bu oddiy session queue yoki barcha tarixiy xabarlarni saqlash mexanizmi emas.

Ishlash prinsipi

Sensor building/room1/temperature topiciga 23.4 qiymatini retained qilib yuborsa, keyinroq ulangan dashboard keyingi o‘lchovni kutmasdan joriy holatni oladi. Broker yangi subscription filteriga mos har bir retained topic uchun saqlangan xabarni yetkazadi. Keyingi live publishlar subscriptionning odatiy QoS qoidalari bilan davom etadi.

Retained nusxa topicga tegishli, ma’lum bir subscriberga emas. Broker restartdan keyin saqlab qolishi persistence va broker konfiguratsiyasiga bog‘liq. MQTT specification retained xatti-harakatini belgilaydi, ammo disk durabilityning aniq darajasi implementationga qarab farq qiladi.

Tozalash va yangilash

Publisher bir xil topicga zero-byte payloadni RETAIN flag bilan yuborsa broker mavjud retained message ni o‘chiradi. Yangi subscriberga bu qiymat yuborilmaydi. Oddiy non-retained publish oldingi retained qiymatni o‘zgartirmaydi; u faqat hozirgi subscriberlar uchun live xabar bo‘ladi.

MQTT 5 Message Expiry Interval retained xabarning amal qilish muddatini cheklashi mumkin. Expiry bo‘lmasa eski sensor holati uzoq saqlanib, qurilma allaqachon offline bo‘lsa ham yangi client uni joriy deb qabul qilishi mumkin. Payload ichidagi measurement timestamp va freshness siyosati shu xavfni kamaytiradi.

RETAIN flagini talqin qilish

Publisherdan brokerga kelgan flag xabar saqlanishini so‘raydi. Broker retained nusxani yangi subscriptionga yuborganda RETAIN flag odatda bu xabar retained storage dan kelganini ko‘rsatadi. Subscription mavjud bo‘lgandan keyingi odatiy live xabarda flag talqini protokol qoidalariga mos bo‘ladi. Client kutubxonasi flagni va payload timestampini alohida ko‘radi.

MQTT 5 retain handling subscription optioni yangi subscriptionda retained xabarni yuborish, faqat subscription yangidan yaratilganda yuborish yoki umuman yubormaslikni tanlaydi. Bu qayta ulanishda bir xil state hodisasini keraksiz qayta ishlashni kamaytiradi.

Qo‘llanish sohasi

Retained message qurilmaning so‘nggi konfiguratsiyasi, availability holati, joriy setpoint yoki sensorning oxirgi qiymati uchun qulay. Hodisalar tarixi, to‘lov amali yoki bir marta bajariladigan command uchun ehtiyotkorlik kerak: yangi subscriber eski commandni yangi topshiriq deb bajarishi mumkin.

Last Will and Testament retained publish bilan birga ishlatilsa broker uzilgan clientning offline holatini saqlashi mumkin. Client normal ulanishda online retained qiymat yuboradi, kutilmagan uzilishda broker retained willni e’lon qiladi.

Xavfsizlik va resurs

Publish ACL clientning qaysi topicda retained holat o‘zgartira olishini cheklaydi. Aks holda hujumchi umumiy konfiguratsiya yoki availabilityni soxtalashtirishi mumkin. Ko‘p noyob topicga retained xabar yuborish broker storage va subscription matching xarajatini oshiradi; topic naming, quota va expiry bilan boshqariladi.

Shared subscription bilan farqi

Retained state yangi subscriptionga boshlang‘ich snapshot beradi, keyingi live xabarlarni balanslashni belgilamaydi. Shared subscriptionda bir guruh clientlar orasidan bittasi har publishni oladi; yangi group a’zosi retained nusxani olish qoidasi broker va subscription optioniga muvofiq qo‘llanadi. Retained xabar QoS darajasi bilan saqlanadi, ammo subscriber so‘ragan maksimal QoS natijani cheklashi mumkin.

Bir topicda state va eventni aralashtirish semantik chalkashlik tug‘diradi. device/42/status retained holatga, device/42/alerts esa vaqtli hodisalarga ajratilishi mumkin. Topic kontrakti payloadning snapshot yoki event ekanini aniq bildiradi.

Bog‘liq tushunchalar

MQTT, Topic, Publisher, Subscriber, RETAIN flag, Last Will and Testament, Message expiry