Middle — Middle+
Pouvez-vous expliquer la hiérarchie des messages avec garantie de livraison, où le message sera livré au moins une fois de manière garantie?
sobes.tech IA
Réponse de l'IA
La garantie de livraison au moins une fois (livraison au moins une fois) signifie que le système garantit la livraison du message au destinataire au moins une fois, mais il peut y avoir des duplications.
La hiérarchie des messages avec cette garantie est généralement construite aux niveaux suivants :
- Envoi du message — le message est placé dans une file d’attente ou un broker de messages.
- Confirmation de réception — le destinataire confirme la réception du message (acknowledgment).
- Réenvoi — si la confirmation n’est pas reçue dans le délai imparti, le message est renvoyé.
En Go, par exemple, lors de l’utilisation de brokers comme Kafka ou RabbitMQ, cette logique peut être implémentée :
- Le message est publié dans la file.
- Le destinataire traite le message et envoie une confirmation.
- Si la confirmation n’arrive pas, le broker redélivre le message.
Cela garantit que le message sera livré au moins une fois, mais peut être livré plusieurs fois si la confirmation est perdue ou si le traitement n’est pas terminé.
Exemple en Go avec RabbitMQ (de manière simplifiée) :
ch, _ := conn.Channel()
msgs, _ := ch.Consume("queue", "", false, false, false, false, nil)
for d := range msgs {
// Traitement du message
processMessage(d.Body)
// Confirmation du traitement
d.Ack(false)
}
Si Ack n’est pas appelé, le message sera redélivré.