bullmq-specialist
Ajuda seu agente a gerenciar tarefas em segundo plano com o BullMQ. Ele garante que processos assíncronos funcionem de forma confiável.
O que ela faz
Este especialista ajuda a organizar tarefas que precisam ser feitas em segundo plano em um aplicativo. Ele garante que essas tarefas sejam executadas de forma confiável, mesmo que o aplicativo precise ser reiniciado.
Quando usar
- ✓Quando você precisa agendar tarefas para serem executadas mais tarde.
- ✓Quando você tem muitas tarefas e precisa processá-las em lotes.
- ✓Quando você quer monitorar o andamento das tarefas.
Exemplo do que pedir para a IA
“Como configuro uma fila para enviar e-mails em segundo plano?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ele usa um sistema chamado BullMQ que gerencia uma lista de tarefas (fila) e trabalhadores que executam essas tarefas. Você define como as tarefas devem ser executadas e o sistema cuida do resto.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill bullmq-specialistOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/bullmq-specialist/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Especialista em BullMQ
Especialista em BullMQ para filas de trabalho baseadas em Redis, processamento em segundo plano e execução assíncrona confiável em aplicações Node.js/TypeScript.
Princípios
- Jobs são "dispare e esqueça" do lado do produtor - deixe a fila cuidar da entrega.
- Sempre defina opções explícitas para os jobs - os padrões raramente atendem ao seu caso de uso.
- A idempotência é sua responsabilidade - jobs podem ser executados mais de uma vez.
- Estratégias de backoff evitam "thundering herds" - exponencial é melhor que linear.
- Filas de "dead letter" não são opcionais - jobs falhados precisam de um lugar.
- Limites de concorrência protegem serviços downstream - comece conservador.
- Dados do job devem ser pequenos - passe IDs, não payloads.
- Desligamento gracioso evita jobs órfãos - trate SIGTERM corretamente.
Capacidades
- bullmq-queues
- job-scheduling
- delayed-jobs
- repeatable-jobs
- job-priorities
- rate-limiting-jobs
- job-events
- worker-patterns
- flow-producers
- job-dependencies
Escopo
- redis-infrastructure -> redis-specialist
- serverless-queues -> upstash-qstash
- workflow-orchestration -> temporal-craftsman
- event-sourcing -> event-architect
- email-delivery -> email-systems
Ferramentas
Núcleo
- bullmq
- ioredis
Hospedagem
- upstash
- redis-cloud
- elasticache
- railway
Monitoramento
- bull-board
- arena
- bullmq-pro
Padrões
- delayed-jobs
- repeatable-jobs
- job-flows
- rate-limiting
- sandboxed-processors
Padrões
Configuração Básica de Fila
Fila BullMQ pronta para produção com configuração adequada.
Quando usar: Ao iniciar qualquer nova implementação de fila.
import { Queue, Worker, QueueEvents } from 'bullmq'; import IORedis from 'ioredis';
// Conexão compartilhada para todas as filas const connection = new IORedis(process.env.REDIS_URL, { maxRetriesPerRequest: null, // Necessário para BullMQ enableReadyCheck: false, });
// Cria a fila com padrões sensatos const emailQueue = new Queue('emails', { connection, defaultJobOptions: { attempts: 3, backoff: { type: 'exponential', delay: 1000, }, removeOnComplete: { count: 1000 }, removeOnFail: { count: 5000 }, }, });
// Worker com limite de concorrência const worker = new Worker('emails', async (job) => { await sendEmail(job.data); }, { connection, concurrency: 5, limiter: { max: 100, duration: 60000, // 100 jobs por minuto }, });
// Lida com eventos
worker.on('failed', (job, err) => {
console.error(Job ${job?.id} failed:, err);
});
Jobs Atrasados e Agendados
Jobs que rodam em horários específicos ou após atrasos.
Quando usar: Para agendar tarefas futuras, lembretes ou ações com tempo definido.
// Job atrasado - roda uma vez após o atraso await queue.add('reminder', { userId: 123 }, { delay: 24 * 60 * 60 * 1000, // 24 horas });
// Job repetível - roda em um agendamento await queue.add('daily-digest', { type: 'summary' }, { repeat: { pattern: '0 9 * * *', // Todo dia às 9h tz: 'America/New_York', }, });
// Remove job repetível await queue.removeRepeatable('daily-digest', { pattern: '0 9 * * *', tz: 'America/New_York', });
Fluxos de Jobs e Dependências
Processamento complexo de jobs em várias etapas com relacionamentos pai-filho.
Quando usar: Quando jobs dependem da conclusão de outros jobs primeiro.
import { FlowProducer } from 'bullmq';
const flowProducer = new FlowProducer({ connection });
// Pai espera que todos os filhos concluam await flowProducer.add({ name: 'process-order', queueName: 'orders', data: { orderId: 123 }, children: [ { name: 'validate-inventory', queueName: 'inventory', data: { orderId: 123 }, }, { name: 'charge-payment', queueName: 'payments', data: { orderId: 123 }, }, { name: 'notify-warehouse', queueName: 'notifications', data: { orderId: 123 }, }, ], });
Desligamento Gracioso
Fecha workers corretamente sem perder jobs.
Quando usar: Ao implantar ou reiniciar workers.
const shutdown = async () => { console.log('Desligando graciosamente...');
// Para de aceitar novos jobs await worker.pause();
// Espera os jobs atuais terminarem (com timeout) await worker.close();
// Fecha a conexão da fila await queue.close();
process.exit(0); };
process.on('SIGTERM', shutdown); process.on('SIGINT', shutdown);
Dashboard Bull Board
Monitoramento visual para filas BullMQ.
Quando usar: Quando precisar de visibilidade sobre o status da fila e os estados dos jobs.
import { createBullBoard } from '@bull-board/api'; import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
…
Perguntas frequentes
O que são 'jobs'?
'Jobs' são as tarefas individuais que você quer que o sistema execute em segundo plano.
O que significa 'idempotência'?
Significa que executar uma tarefa várias vezes tem o mesmo resultado que executá-la uma vez. Você precisa garantir que suas tarefas sejam idempotentes.
Por que é importante lidar com o 'graceful shutdown'?
Para garantir que nenhuma tarefa em andamento seja perdida quando o aplicativo for reiniciado ou desligado.
Detalhes
Descrição original do autor
BullMQ expert for Redis-backed job queues, background processing, and reliable async execution in Node.js/TypeScript applications.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2469
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC