0
0
NestJSframework~30 mins

Named jobs in NestJS - Mini Project: Build & Apply

Choose your learning style9 modes available
Named Jobs with NestJS Bull Queue
📖 Scenario: You are building a NestJS application that processes background tasks using Bull queues. You want to organize your jobs by giving each job a specific name. This helps you identify and manage different types of jobs easily.
🎯 Goal: Create a Bull queue in NestJS and add named jobs to it. Then, set up a processor that listens for jobs by their names and handles them accordingly.
📋 What You'll Learn
Create a Bull queue named emailQueue
Add a named job sendWelcomeEmail with data containing userId: 123
Add a named job sendPasswordReset with data containing userId: 456
Create a processor that listens for sendWelcomeEmail jobs and logs the userId
Create a processor that listens for sendPasswordReset jobs and logs the userId
💡 Why This Matters
🌍 Real World
Named jobs help organize background tasks like sending different types of emails or processing different workflows in a clear way.
💼 Career
Understanding named jobs in queues is important for backend developers working with task queues, microservices, and scalable applications.
Progress0 / 4 steps
1
Setup Bull queue in NestJS
Import BullModule in your module and register a queue named emailQueue using BullModule.registerQueue.
NestJS
Need a hint?

Use BullModule.registerQueue({ name: 'emailQueue' }) inside the imports array.

2
Add named jobs to the queue
Inject the emailQueue using @InjectQueue('emailQueue') in a service. Add two named jobs: sendWelcomeEmail with data { userId: 123 } and sendPasswordReset with data { userId: 456 } using emailQueue.add.
NestJS
Need a hint?

Use this.emailQueue.add('sendWelcomeEmail', { userId: 123 }) and similarly for sendPasswordReset.

3
Create processors for named jobs
Create a processor class decorated with @Processor('emailQueue'). Add two methods decorated with @Process('sendWelcomeEmail') and @Process('sendPasswordReset'). Each method receives a job and logs job.data.userId.
NestJS
Need a hint?

Use @Processor('emailQueue') on the class and @Process('sendWelcomeEmail') and @Process('sendPasswordReset') on methods.

4
Trigger job addition in application
In the EmailService, add a method called start that calls addJobs(). Then, in the AppModule, inject EmailService and call start() in the constructor to trigger job addition when the app starts.
NestJS
Need a hint?

Create a start method in EmailService that calls addJobs(). Then call this.emailService.start() in AppModule constructor.