Saltar al contenido
Explorar conocimiento

concepto · intermedio · 2 min de lectura

At Least Once

At least once garantiza que ningún mensaje se pierde, pero puede entregar duplicados, delegando la deduplicación al consumidor.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • At Least Once as a concept

No cubre

  • implementation details

Supone

  • The reader understands relevant fundamentals.

Resumen

At least once es la garantía de entrega más común en mensajería: el broker se asegura de que cada mensaje llegue a su destino, aunque para lograrlo pueda entregarlo más de una vez. Si un consumidor procesa un mensaje pero no confirma antes de fallar, el broker reenvía el mensaje a otro consumidor —o al mismo cuando se recupera—.

El consumidor debe ser idempotente: procesar el mismo mensaje dos veces debe producir el mismo resultado. Eso puede significar usar IDs únicos para deduplicar, o diseñar operaciones que toleren repeticiones.

Alcance y supuestos

Cubre at least once como garantía de entrega, su contraste con at most once y exactly once, y patrones de idempotencia. Asume familiaridad con mensajería.

Modelo mental

Un amigo que te reenvía un mensaje de WhatsApp hasta que le contestás "recibido". Si te quedaste sin batería después de leerlo pero antes de contestar, te lo reenvía de nuevo. Puede que lo leas dos veces, pero seguro que lo leíste al menos una.

Uso práctico

  • ✅ Kafka (default), RabbitMQ con acknowledgments, SQS.
  • ❌ Operaciones no idempotentes sin deduplicación.

Ejemplo trabajado: deduplicar con idempotency key

Un servicio de pagos recibe POST /charges con header Idempotency-Key: abc123. Si el request se pierde y el cliente reintenta con la misma key, el servidor reconoce la key y devuelve el resultado original sin cobrar dos veces.

Evidencia

  • La mayoría de los brokers de mensajería ofrecen at least once como comportamiento por defecto.

Fuentes citadas