框架:NestJS
我目前通过与redis通信来管理队列。
我使用configService作为cross-env。
下面是AppModule、AudioModule和AudioService的代码。
< AppModule.ts >
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: `.env.${process.env.NODE_ENV}`,
}),
BullModule.forRootAsync({
useFactory: () => ({
redis: {
host: "localhost",
port: 6379,
},
}),
}),
AudioModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
< AudioModule.ts >
@Module({
imports: [
BullModule.registerQueueAsync({
name: "audio",
useFactory: async (configService: ConfigService) => ({
name: configService.get<string>('QUEUE_NAME', 'audio-test')
}),
inject: [ConfigService]
}),
],
controllers: [AudioController],
providers: [AudioService],
})
export class AudioModule {}
< AudioService.ts >
@Injectable()
export class AudioService {
constructor(@InjectQueue("audio") private audioQueue: Queue) {}
async getJobById(jobId: JobId) {
return await this.audioQueue.getJob(jobId);
}
}
我希望使用configService根据开发、测试和生产环境动态更改队列名称。
谢谢。
1条答案
按热度按时间yruzcnhs1#
将ConfigService注入AudioModule,并使用它来获取QUEUE_NAME环境变量的值。
可以在每个环境(dev、test、prod)的
.env
文件中设置QUEUE_NAME
环境变量