Bosh sahifa Wiki Message ID

Message ID

Message ID — xabarni ma’lum protokol yoki messaging tizimi doirasida boshqa xabarlardan ajratish uchun beriladigan identifikatordir. Uning uzunligi, noyoblik chegarasi va vazifasi protokolga bog‘liq. CoAPda Message ID 16-bit transport identifikatori bo‘lsa, message brokerda u application yaratgan UUID yoki domen kaliti bo‘lishi mumkin.

Noyoblik scopei

Identifikator global, producer doirasi, connection, partition yoki vaqt oynasi ichida noyob bo‘lishi mumkin. “Message ID unique” degan talab scope va muddat ko‘rsatilmasa yetarli emas. 16-bit qiymat tez aylanadi, UUID esa collision ehtimolini juda kamaytiradi, ammo semantik duplicate ni avtomatik yo‘q qilmaydi.

Broker producer bergan IDni tekshirmasdan metadata sifatida saqlashi mumkin. Ikki xabar bir ID bilan publish qilinsa broker ularni alohida yetkazishi ehtimol. Deduplication xususiyati mavjud bo‘lsa uning cache muddati va qaysi fielddan foydalanishi aniq bo‘ladi.

CoAPdagi Message ID

CoAP Message ID ACK va Reset xabarlarini CON/NON datagram bilan moslashtirish hamda duplicate datagramni qisqa exchange lifetime ichida aniqlashga xizmat qiladi. Token esa request-response correlation uchun ishlatiladi. Separate response yangi Message IDga ega bo‘lishi mumkin, lekin original tokenni saqlaydi.

Sender bir destination bilan Message IDni juda tez qayta ishlatmasligi kerak. Receiver yaqinda ko‘rilgan IDlarni endpoint bilan birga cache qiladi. NAT yoki address o‘zgarishi endpoint identifikatsiyasiga ta’sir qilishi mumkin.

Broker va event tizimida

Message ID log, trace va dead-letter yozuvini original event bilan bog‘laydi. Retry yangi transport delivery yaratishi, ammo bir xil mantiqiy message IDni saqlashi mumkin. Yangi biznes event esa yangi ID oladi. Retry attempt alohida fieldda yuritiladi.

Consumer processed IDs jadvali orqali duplicate ni tanishi mumkin. ID va business side effect bir transactionda qayd etilmasa crash oralig‘ida ikki holatdan biri yo‘qoladi. Jadval retentioni brokerda xabar qayta kelishi mumkin bo‘lgan maksimal muddatdan qisqa bo‘lmasligi kerak.

ID yaratish

Random UUID markaziy koordinatsiyasiz yaratiladi. Time-sortable ULID yoki UUIDv7 indeks locality va vaqt bo‘yicha tartibni yaxshilashi mumkin, ammo timestampni ochib beradi. Database sequence sodda va ixcham, lekin bir nechta producer orasida markaziy allocator talab qiladi.

Payload hash content-addressed ID sifatida duplicate byte larni taniydi. Ikki semantik jihatdan alohida, lekin bir xil payloadli eventni xato birlashtirishi mumkin. Canonical serialization bo‘lmasa maydon tartibi hashni o‘zgartiradi.

Xavfsizlik va kuzatuv

Ketma-ket ID tashqi API orqali record soni yoki faoliyatni oshkor qilishi mumkin. Message ID authorization vositasi emas; IDni bilish xabarni o‘qish huquqini bermaydi. Log va URLda ishlatilsa control character, uzunlik va format tekshiriladi.

ID trace ID, correlation ID va idempotency keydan farq qiladi. Bitta qiymatni barcha vazifaga ishlatish scope va lifecyclelarni aralashtiradi. Tizim har identifikatorning yaratuvchisi, saqlanish muddati va qaysi amalda yangilanishini belgilaydi.

Operatsion tekshiruv

Message ID logga producer, broker va consumer bosqichida bir xil field nomi bilan yoziladi. Dead-letter va replay original IDni saqlab, delivery attempt uchun yangi identifikator qo‘shishi mumkin. Bitta ID bo‘yicha haddan tashqari ko‘p delivery retry loop yoki producer duplicate ni ko‘rsatadi.

ID generatorining collision testi faqat kichik samplega tayanmaydi. Bit entropiyasi, random source va distributed node prefix dizayn orqali baholanadi. Clockga asoslangan generator vaqt ortga qaytsa duplicate bermasligi kerak.

Bog‘liq tushunchalar

UUID, Correlation ID, Idempotency key, CoAP token, Deduplication, Message broker, Trace ID