Middle — Middle+
Pode explicar a hierarquia de mensagens com garantia de entrega, na qual a mensagem será entregue pelo menos uma vez?
sobes.tech IA
Resposta da IA
A garantia de entrega pelo menos uma vez (at-least-once delivery) significa que o sistema garante a entrega da mensagem ao destinatário pelo menos uma vez, mas pode ocorrer duplicação.
A hierarquia de mensagens com essa garantia geralmente é construída nos seguintes níveis:
- Envio da mensagem — a mensagem é colocada em uma fila ou broker de mensagens.
- Confirmação de recebimento — o destinatário confirma o recebimento da mensagem (acknowledgment).
- Reenvio — se a confirmação não for recebida dentro do timeout definido, a mensagem é reenviada.
Em Go, por exemplo, ao trabalhar com brokers como Kafka ou RabbitMQ, essa lógica pode ser implementada:
- A mensagem é publicada na fila.
- O destinatário processa a mensagem e envia uma confirmação.
- Se a confirmação não chegar, o broker reenviará a mensagem.
Isso garante que a mensagem será entregue pelo menos uma vez, mas pode ser entregue várias vezes se a confirmação for perdida ou o processamento não for concluído.
Exemplo em Go usando RabbitMQ (de forma simplificada):
ch, _ := conn.Channel()
msgs, _ := ch.Consume("queue", "", false, false, false, false, nil)
for d := range msgs {
// Processamento da mensagem
processMessage(d.Body)
// Confirmação do processamento
d.Ack(false)
}
Se Ack não for chamado, a mensagem será entregue novamente.