前言
@nestjs/bull
是一个用于处理队列的Nest.js模块。它基于Bull库,提供了在Nest框架中使用队列的功能,这个模块要跟redis联合起来使用
1.下载队列模块:
npm install --save @nestjs/bull bull redis
项目结构:
2. 在模块中导入BullModule
@Module({imports: [BullModule.registerQueue({// 这里 audio 名称,是 audioConsumer 这个文件里面的消费者定义的名称name: 'audio',redis: {host: '端口号',port: 6379,db: 0,password: '',},}),],controllers: [AppController],providers: [AppService, AudioConsumer], }) export class AppModule {}
3.定义消费者
import { Process, Processor } from '@nestjs/bull';
import { Job } from 'bull';@Processor('audio')
export class AudioConsumer {@Process()async transcode(job: Job) {console.log('消费者进行代码');console.log(job);return {};}
}
4.生产者生产消息
import { Injectable } from '@nestjs/common';
import { InjectQueue } from '@nestjs/bull';
import { Queue } from 'bull';@Injectable()
export class AppService {constructor(// 这里 audio 名称,是 audioConsumer 这个文件里面的消费者定义的名称@InjectQueue('audio') private readonly myQueue: Queue,) {}async addJobToQueue() {console.log('进入方法');const job = await this.myQueue.add({foo: 'bar',});console.log(job);}
}