Desenhar um sistema de tarefas em segundo plano com filas e workers
Desenha filas e workers para tarefas assíncronas: escolha tecnológica, jobs idempotentes, retentativas por tipo de erro, prioridades, limites de concorrência, outbox e monitorização. Pensado para ChatGPT, Claude, Gemini e Microsoft Copilot. Inclui 4 variáveis personalizáveis e pode copiá-lo gratuitamente com um clique.
Avançado · Texto · Pendente de revisão editorial
Prompt
Atua como arquiteto de software com experiência em processamento assíncrono e sistemas de filas.
Quero tirar dos pedidos web o trabalho pesado ou lento da minha aplicação.
- Tarefas a passar para segundo plano: {{tarefas}}
- Volume e picos previstos: {{volume}}
- Stack atual: {{stack}}
- Infraestrutura e restrições: {{infraestrutura}}
Entregáveis:
1. Classificação de cada tarefa: urgência, duração típica, se chama serviços externos, se pode correr duas vezes sem efeitos secundários e o que acontece se se perder.
2. Opções tecnológicas (fila na base de dados, Redis ou um message broker) com vantagens, desvantagens e custo operacional no meu caso, sem números de desempenho inventados. Uma recomendação justificada.
3. Desenho dos jobs: carga útil mínima (identificadores, não objetos completos), idempotência com chaves ou verificações de estado, timeouts e versionamento do formato das mensagens.
4. Política de retentativas por tipo de erro (transitório, limite de pedidos de terceiros, dados inválidos, erro de programação), backoff com jitter e fila de mensagens falhadas com um procedimento para as rever e reprocessar.
5. Filas separadas e prioridades, concorrência por fila e limites de pedidos para APIs externas.
6. Consistência entre base de dados e fila: padrão outbox ou colocação em fila depois do commit, e porque não pôr em fila dentro de uma transação aberta.
7. Tarefas agendadas: como evitar execuções duplicadas com vários workers.
8. Publicações e encerramento ordenado: o que acontece aos jobs em curso.
9. Monitorização: métricas (profundidade da fila, idade do job mais antigo, taxa de erros, duração), alertas e painéis.
10. Um plano de migração por fases a partir da situação atual.
Restrições:
- Se faltar informação sobre volume, tolerância a atrasos ou infraestrutura, pergunta-me primeiro ou marca como [PREENCHER].
- Prefere a opção mais simples que cumpra os requisitos e explica quando valeria a pena mudar.
- Inclui um diagrama em texto do fluxo completo.Como utilizar
- Enumera as tarefas lentas atuais e quanto tempo demoram dentro do pedido.
- Indica que infraestrutura consegues realmente operar (por exemplo, se já tens Redis ou só uma base de dados).
- Começa por mover uma única tarefa, acrescenta as métricas e depois migra o resto.
Exemplo de utilização
Tarefas: enviar emails, gerar faturas em PDF, sincronizar encomendas com o ERP · 20 000 jobs por dia com picos nos saldos · Stack: Laravel com MySQL · Um servidor, Redis disponível.
Exemplo de resultado
1. Classificação das tarefas
| Tarefa | Urgência | Duração típica | Serviço externo | Pode repetir? | Se se perder… |
|---|---|---|---|---|---|
| Email transacional | Alta (segundos) | Curta | Sim (SMTP/API) | Não sem chave de idempotência | O cliente não recebe a confirmação |
| Fatura PDF | Média (minutos) | Média, pesada em CPU | Não | Sim, se sobrescrever o mesmo ficheiro | Volta a gerar-se |
| Sync ERP | Média | Variável | Sim, com limites | Só verificando o estado | Encomendas dessincronizadas |
2. Recomendação
Filas do Laravel sobre Redis + Horizon. O Redis já existe, não acrescenta mais uma peça para manter e o Horizon dá painéis e retries sem configuração extra. Um broker dedicado só compensaria com vários consumidores independentes ou garantias de entrega mais rígidas.
5. Filas e concorrência
emails— prioridade alta, vários workers.faturas— poucos workers para não saturar o CPU do único servidor.erp— 1–2 workers eRateLimitedde acordo com o limite do ERP → [COMPLETAR].
Diagrama
Request → DB::transaction → outbox / afterCommit → Redis
→ Horizon (emails | faturas | erp) → retries com backoff → failed_jobs
Com uma equipa de duas pessoas sem prevenção, os alertas vão para um canal visto em horário laboral, exceto «fila de emails parada», que merece aviso imediato…
Dados-chave
- Categoria
- Programação e desenvolvimento · Arquitetura de software
- Tipo de resultado
- Texto
- Nível
- Avançado
- Pensado para
- ChatGPT, Claude, Gemini e Microsoft Copilot
- Verificado em
- Pendente de verificação editorial
- Variáveis
- Tarefas em segundo plano, Volume e picos, Stack atual e Infraestrutura e restrições
- Idioma
- Português
- Preço
- Gratuito, sem registo
- Atualizado
- 07/11/2026
Perguntas frequentes
O que é o padrão outbox e porque é recomendado?
Consiste em gravar a mensagem numa tabela, na mesma transação dos dados de negócio, e publicá-la depois. Evita pôr em fila um job de algo que nunca foi gravado, ou gravar algo sem o respetivo job.
Uma fila na base de dados é suficiente?
Para volumes moderados costuma ser, e não acrescenta infraestrutura. Quando a fila compete com as consultas da aplicação ou precisas de muita concorrência, compensa passar para Redis ou para um broker.
Para que serve este prompt?
Desenha filas e workers para tarefas assíncronas: escolha tecnológica, jobs idempotentes, retentativas por tipo de erro, prioridades, limites de concorrência, outbox e monitorização.
Com que ferramentas de IA funciona?
Foi pensado para ChatGPT, Claude, Gemini e Microsoft Copilot. Ainda não o verificámos nestas ferramentas, pelo que os resultados podem variar entre elas.
Como personalizo o prompt?
Clique em “Personalizar” e preencha as variáveis (Tarefas em segundo plano, Volume e picos, Stack atual e Infraestrutura e restrições). O texto atualiza-se instantaneamente e pode depois copiá-lo com um clique. Os valores ficam guardados apenas no seu navegador.
Preciso de experiência para o utilizar?
É de nível avançado: destina-se a pessoas com experiência no tema, capazes de avaliar e ajustar o resultado.
Este prompt é gratuito?
Sim. Todos os prompts do HomeCasa Prompts são gratuitos, sem registo nem subscrição. Pode também utilizá-los em projetos profissionais.
Posso confiar no resultado da IA?
Trate-o como um rascunho de qualidade: verifique sempre os dados, os números e as afirmações importantes antes de publicar ou tomar decisões.