Amazon SQS: colas, reintentos y mensajes fallidos
SQS desacopla sistemas mediante mensajes persistentes en una cola. Evita que una aplicación tenga que procesar todas las tareas de manera síncrona.
Por qué importa en una infraestructura moderna
Un pedido genera un evento que entra en la cola. Un trabajador lo procesa y elimina el mensaje cuando acaba. Si falla, el mensaje puede volver a estar disponible. La cola de mensajes fallidos (DLQ) permite investigar mensajes que fallan reiteradamente.
Cómo utilizarlo correctamente
Configura correctamente el tiempo de visibilidad, retención, número de recepciones y redrive. Al integrar SQS con Lambda, revisa tiempos de ejecución y procesamiento por lotes. Monitoriza el número de mensajes pendientes y la edad de los más antiguos. Trata los mensajes como potencialmente duplicados.
¿Cuándo conviene utilizar Amazon SQS?
Es útil cuando resuelve una necesidad real de arquitectura; incluir todos los servicios en una plantilla solo porque existen añade complejidad, permisos y costes. Empieza con el flujo más pequeño posible, documenta las responsabilidades, trabaja primero en pruebas y crea alarmas de coste y operación.
Infraestructura como código con CloudFormation
Cuando haya que repetir el despliegue, usa una plantilla versionada que describa los recursos pertinentes y sus relaciones. Revisa los permisos antes de ejecutar cambios. Para aprender se puede empezar desde la consola de AWS y pasar a AWS CLI después.
Artículos de esta serie
- AWS CloudFormation: plantillas YAML, pilas y despliegues
- Amazon SNS: qué es un tema y para qué sirve
- Amazon SQS: colas, reintentos y mensajes fallidos
- AWS Lambda: cómo procesar eventos sin servidor propio
- AWS IAM: permisos, roles y mínimo privilegio
- AWS KMS: cuándo necesitas claves de cifrado
- AWS Secrets Manager: credenciales y rotación segura
Referencia oficial
Documentación de AWS sobre Amazon SQS.
Ejemplo: procesar mil imágenes sin bloquear una web
Una aplicación permite cargar imágenes y genera un trabajo de procesamiento por cada archivo. Si ejecuta todas las conversiones dentro de la petición HTTP, aumentan los tiempos de espera y los errores. Con SQS, la aplicación confirma la recepción y coloca trabajos pequeños en una cola; uno o varios consumidores procesan después cada archivo. El mensaje debe guardar un identificador y una referencia segura al fichero, no todo el contenido binario.
Aplicación → cola SQS → Lambda procesadora
|
DLQ de fallosVisibilidad y borrado de mensajes
Recibir un mensaje no lo elimina. Durante el visibility timeout el mensaje queda oculto temporalmente; tras procesarlo con éxito se elimina. Si un consumidor falla, vuelve a estar disponible. Esto significa que una tarea puede ejecutarse más de una vez, por lo que hay que hacer operaciones idempotentes, por ejemplo comprobando en una base de datos el estado del trabajo con su identificador.
Configurar una DLQ
Una dead-letter queue recoge mensajes que exceden el número de intentos definido en la política de redirección. Es útil cuando un fichero corrupto provoca un error repetible. La DLQ no arregla el problema: hay que revisar su contenido, corregir la causa y decidir si se reintroducen mensajes. Añade una alarma cuando aparezcan mensajes, y considera retención y cifrado de datos sensibles.
Estándar frente a FIFO
Usa Estándar cuando buscas alto rendimiento y puedes tolerar entregas duplicadas y procesamiento desordenado. FIFO puede ser útil para operaciones cuya secuencia importa y permite capacidades de deduplicación, con sus propios límites. No presupongas que FIFO convierte cualquier flujo distribuido en exactamente una ejecución del código.
Parámetros con Lambda
Para una asignación de eventos SQS→Lambda, AWS recomienda que el tiempo de visibilidad sea al menos seis veces el timeout de Lambda, más la ventana de agrupación cuando corresponda. Configura respuesta parcial de lotes (ReportBatchItemFailures) cuando quieras reintentar solo los mensajes fallidos; de otro modo, un error puede reenviar el lote completo. Consulta la guía oficial.
Costes y observabilidad
Los cargos dependen del número y tipo de solicitudes, transferencia y otros factores. También debes contar ejecuciones de Lambda y almacenamiento o cifrado asociados. Supervisa la edad del mensaje más antiguo, el número de mensajes visibles y las DLQ. Una cola que crece continuamente suele indicar consumidores insuficientes o fallos repetidos.
Guías relacionadas de Laraflex
CloudFormation · Amazon SNS · AWS Lambda · AWS IAM · AWS KMS · AWS Secrets Manager
Consulta la documentación oficial de AWS para ampliar y contrastar los detalles técnicos.
Comments (0)
No comments yet.
Leave a Comment