Sobes.tech
Middle — Middle+

Көбүрөөк бирилүү кепилдиги менен билдирүүлөрдүн иерархиясын түшүндүрө аласызбы, анда билдирүү кеминде бир жолу жеткирилет?

sobes.tech AI

AIден жооп

Камында кеминде бир жолу жеткирүү (at-least-once delivery) системанын билдирүүнү алууга кеминде бир жолу камсыз кылганын билдирет, бирок дублдор болушу мүмкүн.

Мындай кепилдик менен билдирүүлөрдүн иерархиясы адатта төмөнкү деңгээлдерде курулат:

  1. Билдирүүнү жөнөтүү — билдирүү кезекке же билдирүү брокерине коюлат.
  2. Кабыл алуу тастыктамасы — кабыл алгыч билдирүүнү алганын тастыктап, acknowledgment жиберет.
  3. Кайталап жөнөтүү — эгер белгиленген убакытта тастыктама келбесе, билдирүү кайра жөнөтүлөт.

Goдо, мисалы, Kafka же RabbitMQ брокерлери менен иштөөдө, мындай логика ишке ашырылышы мүмкүн:

  • Билдирүү кезекке чыгарылат.
  • Кабыл алгыч билдирүүнү иштетип, тастыктам жиберет.
  • Эгер тастыктама келбесе, брокер билдирүүнү кайра жеткирет.

Бул билдирүүнүн кеминде бир жолу жеткирилишин камсыз кылат, бирок тастыктама жоголуп кетсе же иштетүү аяктагандан кийин, ал бир нече жолу жеткирилиши мүмкүн.

Goда RabbitMQ менен мисал (жөнөкөйлөштүрүлгөн):

ch, _ := conn.Channel()
msgs, _ := ch.Consume("queue", "", false, false, false, false, nil)

for d := range msgs {
    // Билдирүүнү иштетүү
    processMessage(d.Body)
    // Иштетүүнү тастыктоо
    d.Ack(false)
}

Ack чакырылбаса, билдирүү кайра жеткирилет.