Fila de Mensagens
Uma fila de mensagens é um sistema que armazena mensagens (tarefas ou eventos) enviadas por produtores e as entrega para consumidores processarem, desacoplando-os e possibilitando comunicação assíncrona e confiável entre componentes do sistema.
Entendendo Fila de Mensagens
Filas de mensagens resolvem um problema fundamental de sistemas distribuídos: como transferir tarefas de forma confiável entre componentes quando ambos podem estar indisponíveis ao mesmo tempo? Sem uma fila, se o trabalhador estiver ocupado ou fora do ar quando uma tarefa chega, a tarefa é perdida. Com uma fila, a tarefa fica armazenada até que um trabalhador esteja disponível para processá-la.
O modelo produtor-consumidor é simples: um produtor (servidor web, manipulador de webhook, ação do usuário) insere uma mensagem na fila. Um consumidor (trabalhador em segundo plano) retira mensagens da fila e as processa. Vários produtores e consumidores podem atuar simultaneamente, escalando de forma independente.
Sistemas de fila de mensagens populares incluem RabbitMQ (completo, suporta roteamento complexo), Redis (leve, rápido, usado para filas simples), AWS SQS (gerenciado, serverless) e Apache Kafka (streaming de alta performance). A GAIA utiliza RabbitMQ para roteamento avançado e Redis/ARQ para tarefas simples em segundo plano.
Filas de mensagens permitem lidar graciosamente com picos de demanda. Se mil eventos de webhook chegam ao mesmo tempo, eles entram na fila imediatamente e são processados no ritmo que os consumidores podem atender — nenhum evento se perde, e o sistema não entra em colapso por sobrecarga.
Como GAIA usa Fila de Mensagens
A GAIA utiliza o RabbitMQ para rotear eventos entre componentes do sistema e o ARQ (Async Redis Queue) para execução de tarefas em segundo plano. Quando um e-mail chega ou um gatilho de automação é disparado, o evento é colocado imediatamente na fila e processado por trabalhadores de fundo. Essa arquitetura garante que nenhum evento seja perdido durante períodos de alta demanda e permite uma lógica de repetição confiável.
Conceitos relacionados
Webhook
Um webhook é um mecanismo de callback HTTP em que um sistema envia uma requisição HTTP automatizada para uma URL especificada sempre que um evento definido ocorre, permitindo notificações em tempo real e integração entre serviços sem necessidade de polling.
Automação Orientada a Eventos
Automação orientada a eventos (também chamada de automação baseada em eventos) roda um fluxo de trabalho no momento em que algo acontece, como a chegada de um email novo, a criação de uma issue ou uma linha nova em uma planilha, em vez de em um horário fixo. Cada automação liga um evento gatilho às ações que devem ser feitas, e o sistema onde o evento aconteceu avisa a plataforma de automação, geralmente por um webhook.
Automação de Fluxos de Trabalho
A automação de fluxos de trabalho é o uso da tecnologia para executar automaticamente processos e tarefas repetitivas de negócios, reduzindo o esforço manual e o erro humano.
Cron Job
Um cron job é um comando ou script que roda sozinho em um horário que se repete, por exemplo toda noite às 2h ou toda segunda-feira às 9h. O horário é escrito como uma expressão cron de cinco campos (minuto, hora, dia do mês, mês e dia da semana), e o agendador cron do Linux, do macOS e de outros sistemas Unix confere essa expressão a cada minuto e inicia a tarefa quando o horário bate.
Integração de API
Integração de API é o processo de conectar diferentes aplicativos por meio de suas Interfaces de Programação de Aplicações, permitindo que compartilhem dados e funcionalidades de forma transparente.
