Middle — Middle+
Можете ли објаснити хијерархију порука са гаранцијом испоруке, у којој ће порука бити достављена бар једном?
sobes.tech АИ
Одговор од АИ
Garancija dostave najmanje jednom (at-least-once delivery) znači da sistem obezbeđuje dostavu poruke primaocu najmanje jednom, ali može doći do duplikata.
Hijerarhija poruka sa ovom garancijom obično se gradi na sledećim nivoima:
- Slanje poruke — poruka se smešta u red ili broker poruka.
- Potvrda prijema — primalac potvrđuje prijem poruke (acknowledgment).
- Ponovno slanje — ako potvrda ne stigne u zadatom vremenu, poruka se ponovo šalje.
U Go, na primer, radeći sa brokerima poput Kafka ili RabbitMQ, ovu logiku je moguće implementirati:
- Poruka se objavljuje u red.
- Primalac obrađuje poruku i šalje potvrdu.
- Ako potvrda ne stigne, broker ponovo isporučuje poruku.
Ovo garantuje da će poruka biti dostavljena najmanje jednom, ali može biti dostavljena više puta ako je potvrda izgubljena ili obrada nije završena.
Primer u Go sa RabbitMQ (pojednostavljeno):
ch, _ := conn.Channel()
msgs, _ := ch.Consume("queue", "", false, false, false, false, nil)
for d := range msgs {
// Obrada poruke
processMessage(d.Body)
// Potvrda obrade
d.Ack(false)
}
Ako Ack nije pozvan, poruka će biti ponovo dostavljena.