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

  1. Enumera as tarefas lentas atuais e quanto tempo demoram dentro do pedido.
  2. Indica que infraestrutura consegues realmente operar (por exemplo, se já tens Redis ou só uma base de dados).
  3. 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

TarefaUrgênciaDuração típicaServiço externoPode repetir?Se se perder…
Email transacionalAlta (segundos)CurtaSim (SMTP/API)Não sem chave de idempotênciaO cliente não recebe a confirmação
Fatura PDFMédia (minutos)Média, pesada em CPUNãoSim, se sobrescrever o mesmo ficheiroVolta a gerar-se
Sync ERPMédiaVariávelSim, com limitesSó verificando o estadoEncomendas 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 e RateLimited de 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.

Prompts relacionados