Amazon SQS
Resumen General
SQS (Simple Queue Service) es un servicio de colas que permite desacoplar componentes en una arquitectura distribuida. Es ideal para manejar flujos de trabajo asincrónicos, procesar mensajes de manera escalable y reducir la dependencia directa entre servicios.
Links de Contenido
Anotaciones:
¿Qué es Amazon SQS?
Amazon SQS es un sistema de colas de mensajes que permite almacenar y transmitir mensajes entre componentes distribuidos. Funciona como un contenedor que recibe mensajes desde un productor (producer) y los mantiene en espera hasta que un consumidor (consumer) esté listo para procesarlos. Es útil, por ejemplo, para almacenar procesos en espera como un recibo de sueldo hasta que el usuario acceda a él.
Tipos de cola en SQS
- Standard Queue: Alta capacidad de throughput, pero no garantiza el orden ni la entrega única (pueden repetirse). Ideal para grandes volúmenes donde el orden no importa.
- FIFO Queue: Garantiza el orden exacto en que los mensajes fueron enviados. Tiene un throughput más limitado y mayor costo, pero es útil cuando el orden importa.
Visibility Timeout
Cuando un consumidor recibe un mensaje, este se vuelve invisible para los demás por un tiempo determinado (visibility timeout). Si no se procesa en ese tiempo, vuelve a estar disponible. Si se procesa correctamente, el consumidor debe eliminarlo de la cola.
Delivery Delay
Permite retrasar la entrega de un mensaje. Útil si queremos que un mensaje no se procese inmediatamente, por ejemplo, hasta que otro proceso esté listo.
Long Polling (Receive Message Wait Time)
Reduce el costo por llamadas de recepción de mensajes. En lugar de consultar constantemente, el consumidor espera un tiempo para recibir mensajes si la cola está vacía. Mientras más espere, más eficiente será en términos de billing.
Message Retention Period
Define cuánto tiempo puede vivir un mensaje en la cola si no se procesa. Por defecto son 4 días, pero es buena práctica reducirlo. Por ejemplo, si el visibility timeout es de 30 segundos, y queremos hasta 12 intentos, 6 minutos es un valor razonable.
Maximum Message Size
Tamaño máximo permitido para un mensaje. Reducirlo puede ahorrar en costos y evitar que se acumulen mensajes pesados innecesarios.
Encriptación
- Podés encriptar los mensajes con claves gestionadas por SQS.
- También podés usar AWS KMS para gestionar tus propias claves de encriptación.
Access Policy
Permite definir qué usuarios o roles de IAM pueden enviar, recibir o administrar mensajes dentro de una cola.
Redrive Allow Policy
Es vital si queremos capturar los mensajes que fallan repetidamente. Una vez configurada, permite mover esos mensajes a una cola secundaria (dead-letter queue). No sirve para reenviarlos automáticamente al queue principal: deben ser reprocesados manualmente si queremos darles una nueva oportunidad de vida.
Dead-letter queue (DLQ)
Una DLQ permite conservar mensajes que no pudieron procesarse después de múltiples intentos. En lugar de ser descartados, se almacenan en una cola secundaria para revisión y análisis. Es ideal para identificar errores, hacer debugging o reprocesar manualmente.
TAGS
Es recomendable etiquetar las colas declarativamente, incluyendo el creador, propósito o entorno. Esto facilita la organización y el control de costos.
Interacciones con otros servicios
- Podemos suscribir una cola SQS a un SNS (para recibir eventos).
- Podemos usar triggers para que un mensaje active una Lambda.
- También podemos ejecutar pruebas desde la consola usando el botón 'Enviar mensaje'.
Purge Queue
El botón 'Purge' en la consola de SQS elimina todos los mensajes existentes en la cola. Esta acción es irreversible y útil para reiniciar pruebas.