Pular para o conteúdo
Skillpedia
APIs e servidores (backend)48 mil · #2469

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/bullmq-specialist/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/bullmq-specialist/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-specialist

Ou 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.md
Conteú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.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2469
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas