Un message broker garantiza entrega at-least-once. ¿Qué deben hacer los consumidores?
Opciones
- Nada, porque cada mensaje llega una sola vez
- Ser idempotentes: deduplicar por ID o repetir sin daño (Opción correcta)
- Cambiar siempre el broker a modo exactly-once
- Confirmar el mensaje antes de procesarlo
Respuesta
Ser idempotentes (deduplicar por ID de mensaje o hacer que las operaciones se puedan repetir de forma natural)
Por qué
'At-least-once' significa que un mensaje nunca se pierde, pero puede llegar dos veces. Por ejemplo, el consumidor lo procesó pero cayó antes de confirmar, así que el broker lo reenvía.
Así que procesar dos veces el mismo mensaje debe ser inofensivo: guarda los IDs procesados y omite las repeticiones, o usa operaciones como 'fijar estado = pagado' en lugar de 'sumar 10 €'.
Confirmar antes de procesar arriesgaría a perder mensajes.
Recuerda
Entrega at-least-once → consumidores idempotentes.