O Problema
Sistemas de filas tradicionais assumiam tempos de execução previsíveis. Os jobs integrados com LLM de hoje exibem variância extrema de latência — chamadas podem variar de 4 a 40 segundos para inputs idênticos. Misturá-los com operações sensíveis ao tempo causa estrangulamentos e degradação do serviço.
Arquitectura: Filas Separadas por SLA
A solução recomendada usa filas distintas com configurações personalizadas:
- Fila alta prioridade (<5s): webhooks críticos, OTP, facturação
- Fila default (<60s): emails transaccionais, notificações
- Fila AI (<5min): chamadas LLM, embeddings, reranking
- Fila bulk (horas): reindexação, exportações em larga escala
Cada fila executa sob supervisores Horizon dedicados com timeouts e configurações de retry adequados.
Retry Inteligente com Backoff Exponencial
Arrays de backoff exponencial previnem problemas de rate limit de API: [10, 30, 120, 300, 600] segundos entre tentativas aumenta progressivamente o tempo de espera.
Idempotência
Idempotência verdadeira requer:
- Geração de UUID na construção do job
- Validação de cache local antes de chamadas à API
- Propagação do header HTTP para APIs externas
- Persistência do resultado antes de completar o job
Tracing Distribuído com OpenTelemetry
Integração com o pacote Laravel OpenTelemetry da Keepsuit fornece visibilidade end-to-end. Spans manuais capturam operações caras (chamadas LLM), com atributos críticos rastreados para análise.
Prevenção de Falhas Silenciosas
Respostas LLM vazias ou malformadas frequentemente completam sem erro. A solução requer lógica de validação explícita que lança excepções, despoletando retentativas quando as respostas falham na validação de schema.