Cola de mensajes
Una cola de mensajes es un sistema que almacena mensajes (tareas o eventos) enviados por productores y los entrega a consumidores para su procesamiento, desacoplando a ambos y permitiendo una comunicación asíncrona y confiable entre los componentes del sistema.
Comprendiendo Cola de mensajes
Las colas de mensajes resuelven un problema fundamental de los sistemas distribuidos: ¿cómo pasar de manera confiable el trabajo entre componentes del sistema cuando ambos lados pueden estar indisponibles al mismo tiempo? Sin una cola, si el trabajador está ocupado o caído cuando llega un trabajo, este se pierde. Con una cola, la tarea se almacena hasta que haya un trabajador disponible para procesarla.
El modelo productor-consumidor es simple: un productor (servidor web, manejador de webhooks, acción de usuario) coloca un mensaje en la cola. Un consumidor (trabajador en segundo plano) toma mensajes de la cola y los procesa. Múltiples productores y consumidores pueden operar simultáneamente, escalándose de forma independiente.
Algunos sistemas de colas de mensajes populares son RabbitMQ (completo, soporta enrutamiento complejo), Redis (ligero, rápido, para colas simples), AWS SQS (gestionado, sin servidor) y Apache Kafka (transmisión de alta capacidad). GAIA utiliza RabbitMQ para enrutamientos complejos y Redis/ARQ para trabajos de segundo plano más simples.
Las colas de mensajes permiten gestionar con gracia los picos de carga. Si llegan 1000 eventos de webhook al mismo tiempo, se ponen en cola inmediatamente y se procesan a medida que los consumidores puedan — no se pierde ningún evento y el sistema no colapsa bajo la carga.
Cómo GAIA usa Cola de mensajes
GAIA utiliza RabbitMQ para enrutar eventos entre los componentes del sistema y ARQ (Async Redis Queue) para la ejecución de trabajos en segundo plano. Cuando llega un correo electrónico o se dispara un activador de automatización, el evento se pone inmediatamente en cola y es procesado por los trabajadores en segundo plano. Esta arquitectura garantiza que no se pierdan eventos durante períodos de alta carga y permite una lógica de reintento confiable.
Conceptos relacionados
Webhook
Un webhook es un mecanismo de devolución de llamada HTTP donde un sistema envía una solicitud HTTP automatizada a una URL específica cada vez que ocurre un evento definido, lo que permite notificación e integración en tiempo real entre servicios sin sondeo.
Automatización basada en eventos
La automatización basada en eventos (también llamada automatización orientada a eventos) ejecuta un flujo de trabajo en el momento en que ocurre algo, como la llegada de un correo nuevo, la creación de una incidencia o una fila nueva en una hoja de cálculo, en lugar de a una hora fija. Cada automatización combina un evento disparador con las acciones que hay que hacer, y el sistema donde ocurrió el evento avisa a la plataforma de automatización, normalmente mediante un webhook.
Automatización de flujos de trabajo
La automatización de flujos de trabajo es el uso de tecnología para ejecutar automáticamente procesos y tareas empresariales repetitivas, reduciendo el esfuerzo manual y los errores humanos.
Trabajo cron
Un cron job (trabajo cron) es un comando o script que se ejecuta solo según un horario que se repite, por ejemplo todas las noches a las 2:00 o cada lunes a las 9:00. El horario se escribe como una expresión cron de cinco campos (minuto, hora, día del mes, mes y día de la semana), y el programador cron de Linux, macOS y otros sistemas Unix la revisa cada minuto y lanza la tarea cuando la hora coincide.
Integración de API
La integración de API es el proceso de conectar distintas aplicaciones de software a través de sus Interfaces de Programación de Aplicaciones, permitiendo que compartan datos y funcionalidades de manera fluida.
