Middle — Middle+
Çatdırılma zəmanəti ilə mesajların iyerarxiyasını izah edə bilərsinizmi, burada mesaj ən az bir dəfə çatdırılacaq?
sobes.tech Süni İntellekt
AI-dan cavab
Ən az bir dəfə çatdırılma zəmanəti (at-least-once delivery) sistemin mesajı ən az bir dəfə alıcıya çatdırdığını təmin edir, lakin təkrarlama baş verə bilər.
Belə zəmanətlə mesajların hierarxiyası adətən aşağıdakı səviyyələrdə qurulur:
- Mesajın göndərilməsi — mesaj növbəyə və ya mesaj brokerinə yerləşdirilir.
- Qəbul təsdiqi — alıcı mesajın qəbulunu təsdiqləyir (acknowledgment).
- Yenidən göndərmə — əgər təsdiq vaxtında alınmazsa, mesaj yenidən göndərilir.
Go-da, məsələn, Kafka və ya RabbitMQ kimi brokerlərlə işləyərkən, bu məntiqi həyata keçirmək olar:
- Mesaj növbəyə yerləşdirilir.
- Alıcı mesajı işləyir və təsdiq göndərir.
- Əgər təsdiq alınmazsa, broker mesajı yenidən çatdırır.
Bu, mesajın ən az bir dəfə çatdırılmasını təmin edir, lakin təsdiq itərsə və ya işləmə tamamlanmazsa, bir neçə dəfə çatdırıla bilər.
Go-da RabbitMQ ilə nümunə (sadələşdirilmiş):
ch, _ := conn.Channel()
msgs, _ := ch.Consume("queue", "", false, false, false, false, nil)
for d := range msgs {
// Mesajın işlənməsi
processMessage(d.Body)
// İşləmə təsdiqi
d.Ack(false)
}
Əgər Ack çağırılmazsa, mesaj yenidən çatdırılacaq.