import { Module, Global } from '@nestjs/common'; import { BullModule } from '@nestjs/bullmq'; import { ConfigModule, ConfigService } from '@nestjs/config'; /** * 队列模块 - 基础设施层 * 基于 NestJS 官方文档实现 * 参考: https://docs.nestjs.cn/techniques/queues * 使用 BullMQ 作为队列引擎 */ @Global() @Module({ imports: [ BullModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: async (configService: ConfigService) => { const redisConfig = configService.get('redis'); return { connection: { host: redisConfig.host, port: redisConfig.port, password: redisConfig.password, db: redisConfig.db, }, defaultJobOptions: { removeOnComplete: 10, removeOnFail: 5, attempts: 3, backoff: { type: 'exponential', delay: 2000, }, }, }; }, }), ], exports: [BullModule], }) export class QueueModule {}