如何在NestJs Bull中注册多个队列?

Meh*_*Meh 1 cron config typescript nestjs

我正在尝试在 NestJs 中创建多个队列,文档说:

通过将多个逗号分隔的配置对象传递给 registerQueue() 方法来创建多个队列。

但这对我不起作用,因为当我尝试这样做时,VScode 建议我应该在逗号后面提及 Bull 选项。以下是我对单个队列的配置,如何注册多个队列?

@Module({
    imports: [
        ConfigModule,
        BullModule.registerQueueAsync({
            name: 'Queue1',
            imports: [ConfigModule],
            useFactory: async (configService: ConfigService) => ({
                redis: {
                    host: configService.get('QUEUE_HOST'),
                    port: +configService.get('QUEUE_PORT'),
                },
            }),
            inject: [ConfigService],
        }),
        HttpModule,
    ],
    controllers: [ScheduleController],
    providers: [MainConsumer], //Service is included here
})

export class AppModule {}

Run Code Online (Sandbox Code Playgroud)

小智 10

registerQueue 和 registerQueueAsync 方法都接收逗号分隔的值作为 met 中的参数

正如 NestJS 网站所述:

通过将多个逗号分隔的配置对象传递给 registerQueue() 方法来创建多个队列。

所以,基本上你必须做以下事情来解决这个问题。

@Module({
    imports: [
        ConfigModule,
        BullModule.registerQueueAsync({
            name: 'Queue1',
            imports: [ConfigModule],
            useFactory: async (configService: ConfigService) => ({
                redis: {
                    host: configService.get('QUEUE_HOST'),
                    port: +configService.get('QUEUE_PORT'),
                },
            }),
            inject: [ConfigService],
        }, {
            name: 'Queue2',
            imports: [ConfigModule],
            useFactory: async (configService: ConfigService) => ({
                redis: {
                    host: configService.get('QUEUE_HOST'),
                    port: +configService.get('QUEUE_PORT'),
                },
            }),
            inject: [ConfigService],
        }),
        HttpModule,
    ],
    controllers: [ScheduleController],
    providers: [MainConsumer], //Service is included here
})

export class AppModule {}
Run Code Online (Sandbox Code Playgroud)