Bull Queue para TypeScript: Poderosa Fila de Tarefas
Bull Queue é uma biblioteca popular para gerenciar filas de tarefas em Node.js, escrita em TypeScript. Ela é baseada em Redis e fornece uma maneira confiável de processar tarefas em segundo plano, como envio de email, geração de relatórios, processamento de imagens e outras operações que não devem bloquear o fluxo principal da aplicação. Bull Queue suporta prioridades, atrasos, novas tentativas e monitoramento através de uma interface web.
Para que serve o Bull Queue?
Em aplicações web modernas, frequentemente surgem tarefas que exigem tempo ou recursos. Executá-las de forma síncrona pode levar à lentidão da interface do usuário ou até mesmo a timeouts. O Bull Queue permite mover essas tarefas para segundo plano, processando-as de forma assíncrona. Isso melhora o desempenho, a escalabilidade e a tolerância a falhas da aplicação. Por exemplo, ao registrar um usuário, você pode enviar imediatamente um email de boas-vindas através da fila, sem fazer o usuário esperar.
Instalação
Para instalar o Bull Queue, execute o comando:
npm install bullTambém será necessário o Redis. Certifique-se de que o Redis está rodando localmente ou acessível remotamente. Para TypeScript, instale também os tipos:
npm install @types/bullFuncionalidades Principais
- Criação de filas: Crie filas facilmente com diferentes configurações.
- Adição de tarefas: Adicione tarefas com dados e opções (prioridade, atraso, tentativas).
- Handlers: Defina funções para processar cada tarefa.
- Novas tentativas: Repetições automáticas em caso de erros com estratégia configurável.
- Monitoramento: Interface web integrada para visualizar o estado das filas (através do pacote
bull-board).
Exemplo de código em TypeScript
import Queue from 'bull';
// Criando a filaconst emailQueue = new Queue('email', { redis: { host: 'localhost', port: 6379 }});
// Adicionando uma tarefaemailQueue.add({ to: 'user@example.com', subject: 'Olá!' }, { attempts: 3, delay: 5000 // 5 segundos de atraso});
// Handler da tarefaemailQueue.process(async (job) => { console.log('Enviando email:', job.data.to); // Código para envio de email aqui await sendEmail(job.data.to, job.data.subject);});
// Tratamento de conclusãoemailQueue.on('completed', (job) => { console.log('Tarefa concluída:', job.id);});
emailQueue.on('failed', (job, err) => { console.error('Erro:', err);});Quando usar
Bull Queue é ideal para:
- Envio de email ou SMS.
- Geração de PDF ou relatórios.
- Processamento de arquivos enviados (imagens, vídeos).
- Execução de tarefas periódicas (tarefas cron).
- Integração com APIs externas com limitação de taxa.
Se o seu projeto em TypeScript requer processamento confiável de tarefas em segundo plano, Bull Queue é uma excelente escolha devido à sua simplicidade, desempenho e integração com Redis.
```Também na biblioteca
Processamento de Imagens em Kotlin: redimensionar e cortar com a biblioteca ImageMagick
Event Bus e padrão Observer em TypeScript: implementação e exemplos
Quartz Scheduler para Java: guia completo com exemplos práticos