image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Valéria Vargas
Valéria Vargas09/03/2025 07:44
Compartilhe
Nexa - Análise Avançada de Imagens e Texto com IA na AWSRecomendados para vocêNexa - Análise Avançada de Imagens e Texto com IA na AWS

Gerenciando Filas com BullMQ no Node.js e Redis via Docker

  • #Docker
  • #Node.js
  • #Redis

O gerenciamento eficiente de filas é essencial para aplicações que precisam lidar com tarefas assíncronas, como processamento de jobs em background, envio de e-mails e geração de relatórios. O BullMQ é uma biblioteca poderosa baseada em Redis que facilita esse gerenciamento no Node.js. Neste artigo, vamos configurar o BullMQ com Redis usando Docker e apresentar exemplos práticos para sua implementação.

1. Configurando o Redis com Docker

O BullMQ utiliza o Redis como seu backend. Para evitar a instalação direta do Redis no sistema, podemos utilizar o Docker para rodá-lo em um contêiner isolado.

Instalação do Docker

Caso ainda não tenha o Docker instalado, siga as instruções no site oficial: https://www.docker.com/get-started

Executando o Redis no Docker

Execute o seguinte comando para iniciar um contêiner Redis:

docker run -d --name redis-bullmq -p 6379:6379 redis

Esse comando:

  • -d: Executa o contêiner em segundo plano
  • --name redis-bullmq: Nomeia o contêiner
  • -p 6379:6379: Expõe a porta 6379 (padrão do Redis)
  • redis: Usa a imagem oficial do Redis

Para verificar se o Redis está rodando, use:

docker ps

E para se conectar ao Redis dentro do contêiner:

docker exec -it redis-bullmq redis-cli

2. Criando um Projeto Node.js com BullMQ

Agora, vamos configurar um projeto Node.js e instalar as dependências necessárias.

Criando o projeto

mkdir bullmq-example && cd bullmq-example
npm init -y

Instalando as dependências

npm install bullmq ioredis dotenv

Aqui instalamos:

  • bullmq: Biblioteca de gerenciamento de filas
  • ioredis: Cliente Redis para Node.js
  • dotenv: Para carregar variáveis de ambiente

3. Configurando e Criando uma Fila com BullMQ

Criando o arquivo .env

Crie um arquivo .env na raiz do projeto para armazenar a configuração do Redis:

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

Criando a conexão com o Redis

Crie um arquivo queue.js para configurar a fila:

const { Queue } = require('bullmq');
require('dotenv').config();

const connection = {
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
};

const queue = new Queue('taskQueue', { connection });

async function addJob() {
await queue.add('exampleJob', { message: 'Hello, BullMQ!' });
console.log('Job adicionado à fila!');
}

addJob();

Esse código:

  • Cria uma conexão com o Redis
  • Define uma fila chamada taskQueue
  • Adiciona um job à fila

Execute o script para adicionar um job:

node queue.js

4. Criando um Processador de Jobs

Agora, vamos criar um processador que consumirá os jobs da fila. Crie um arquivo worker.js:

const { Worker } = require('bullmq');
require('dotenv').config();

const connection = {
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
};

const worker = new Worker('taskQueue', async job => {
console.log(`Processando job: ${job.id}, Dados:`, job.data);
}, { connection });

worker.on('completed', job => {
console.log(`Job ${job.id} concluído com sucesso!`);
});

worker.on('failed', (job, err) => {
console.log(`Job ${job.id} falhou:`, err);
});

Esse worker:

  • Consome jobs da fila taskQueue
  • Exibe os dados do job no console
  • Registra eventos de sucesso ou falha

Para iniciar o worker:

node worker.js

Agora, sempre que um job for adicionado à fila, ele será processado pelo worker automaticamente.

Conclusão

O BullMQ facilita a implementação de filas no Node.js, tornando o processamento de tarefas mais eficiente e escalável. Neste artigo, aprendemos a:

  • Configurar o Redis via Docker
  • Criar um projeto Node.js com BullMQ
  • Adicionar jobs a uma fila
  • Criar um worker para processar os jobs

Agora, você pode expandir esse conceito para diversas aplicações, como envio de e-mails, processamento de imagens e muito mais. 🚀

Curtiu? Compartilhe e comente suas experiências com BullMQ! 💬

Compartilhe
Recomendados para você
Microsoft Certification Challenge #3 DP-100
Decola Tech 2025
Microsoft AI for Tech - Copilot Studio
Comentários (0)
Recomendados para você