Um template para implantar um sistema de enfileiramento BullMQ e Redis.
Esta aplicação utiliza BullMQ, um sistema de enfileiramento baseado em Redis, e Bull-Board, um painel para monitorar e gerenciar essas filas, servido por um servidor Fastify. Ambos os serviços são construídos usando Rslib e gerenciados por PM2.
Existem três maneiras distintas de iniciar os serviços:
Execução Unificada: Para iniciar ambos os serviços simultaneamente, use o comando pnpm start. Esta é a opção mais simples para o desenvolvimento local.
Execução Separada: Para iniciar o worker e o servidor Fastify individualmente, use os comandos pnpm start:worker e pnpm start:server, respectivamente. Essa abordagem oferece maior controle e é usada no template do Railway, mas pode ser facilmente adaptada às suas necessidades.
Execução Direta com Node.js: Para projetos simples que não requerem os recursos do PM2, a execução direta com Node.js pode resultar em menor consumo de recursos. Use node ./dist/worker.js para o worker e node ./dist/server.js para o servidor Fastify.
O PM2 também suporta o Bun. Se desejar, você pode substituir o gerenciador de pacotes do projeto pelo Bun e executar os arquivos TypeScript diretamente (o Bun tem suporte nativo para TypeScript), eliminando a necessidade de uma compilação. No entanto, esteja ciente de que o Bun não é totalmente compatível com o Node.js, o que pode resultar em problemas de execução.
Escalabilidade (PM2): Ambos os serviços suportam escalonamento horizontal através das variáveis de ambiente WORKER_INSTANCES e SERVER_INSTANCES. Defina essas variáveis para o número desejado de instâncias para aumentar a capacidade de processamento do worker e do servidor, respectivamente. Essas variáveis só terão efeito se o PM2 estiver sendo usado.
Você precisa ter a seguinte dependência principal instalada:
Você usa nvm? Então você pode executar nvm install na pasta do projeto para instalar e usar a versão mais apropriada do Node.js.
Após clonar o repositório, instale as dependências locais do projeto:
pnpm installCrie um arquivo .env semelhante a .env.example.
# Redis
REDIS_HOST="localhost"
REDIS_PORT=6379
REDIS_USER=""
REDIS_PASSWORD=""Para executar o projeto localmente, basta executar o comando abaixo:
pnpm devEste projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.