Skip to content

NestJs

Source URL: https://docs.bullmq.io/bullmq-pro/nestjs

There is a compatible module to be used in NestJs based on @nestjs/bullmq.

Terminal window
yarn add @taskforcesh/nestjs-bullmq-pro

{% hint style=“info” %} BullMQ-Pro needs a token, as explained in the install section. {% endhint %}

Once the installation process is complete, we can import the BullModule into the root AppModule.

import { Module } from '@nestjs/common';
import { BullModule } from '@taskforcesh/nestjs-bullmq-pro';
@Module({
imports: [
BullModule.forRoot({
connection: {
host: 'localhost',
port: 6379,
},
}),
],
})
export class AppModule {}

To register a queue, import the BullModule.registerQueue() dynamic module, as follows:

BullModule.registerQueue({
name: 'queueName',
});

To register a flow producer, import the BullModule.registerFlowProducer() dynamic module, as follows:

BullModule.registerFlowProducer({
name: 'flowProducerName',
});

To register a processor, you may need to use Processor decorator:

import {
Processor,
WorkerHost,
OnWorkerEvent,
} from '@taskforcesh/nestjs-bullmq-pro';
import { JobPro } from 'taskforcesh/bullmq-pro';
@Processor('queueName')
class TestProcessor extends WorkerHost {
async process(job: JobPro<any, any, string>): Promise<any> {
// do some stuff
}
@OnWorkerEvent('completed')
onCompleted() {
// do some stuff
}
}

And then register it as a provider:

@Module({
imports: [
BullModule.registerQueue({
name: 'queueName',
connection: {
host: '0.0.0.0',
port: 6380,
},
}),
BullModule.registerFlowProducer({
name: 'flowProducerName',
connection: {
host: '0.0.0.0',
port: 6380,
},
}),
],
providers: [TestProcessor],
})
export class AppModule {}

A working example is available here.