Middle — Middle+
Yetkazib berish kafolati bilan xabarlar hierarxiyasini tushuntirib berishingiz mumkinmi, unda xabar kamida bir marta yetkaziladi?
sobes.tech AI
AIdan javob
Eng kamida kamida yetkazib berish kafolati (at-least-once delivery) tizimning xabarni oluvchiga kamida bir marta yetkazilishini ta'minlaydi, lekin takrorlanishlar bo'lishi mumkin.
Bunday kafolat bilan xabarlar hierarxiyasi odatda quyidagi darajalarda quriladi:
- Xabar yuborish — xabar navbatga yoki xabar brokeriga joylashtiriladi.
- Qabul qilish tasdiqlash — qabul qiluvchi xabarni olganligini tasdiqlaydi (acknowledgment).
- Qayta yuborish — agar tasdiqlash vaqtida olinmasa, xabar qayta yuboriladi.
Go tilida, masalan, Kafka yoki RabbitMQ kabi brokerlar bilan ishlashda, bunday mantiqni amalga oshirish mumkin:
- Xabar navbatga chiqariladi.
- Qabul qiluvchi xabarni ishlaydi va tasdiqlash yuboradi.
- Agar tasdiqlash kelmasa, broker xabarni qayta yetkazadi.
Bu xabar kamida bir marta yetkazilishini ta'minlaydi, lekin tasdiqlash yo'qolgan yoki ishlov berish yakunlanmagan taqdirda, bir nechta marta yetkazilishi mumkin.
Go tilida RabbitMQ bilan (soddalashtirilgan):
ch, _ := conn.Channel()
msgs, _ := ch.Consume("queue", "", false, false, false, false, nil)
for d := range msgs {
// Xabarni ishlash
processMessage(d.Body)
// Ishlov berishni tasdiqlash
d.Ack(false)
}
Agar Ack chaqirilmasa, xabar qayta yetkaziladi.