问题描述
我想遍历所有在 nestJs Bull 中注册的队列并对每个队列做一些事情。
例如我已经有了这个:
@Injectable()
export class BullUIProvider {
constructor(@InjectQueue('backfill') private backfillQueue: Queue) {
setQueues([new BullAdapter(backfillQueue)]);
}
}
但我想做这样的事情:
@Injectable()
export class BullUIProvider {
constructor(@Inject(queueProvider) private queues: QueueProvider) {
setQueues(queues.map((queue) => new BullAdapter(queue)));
}
}
似乎我一次只能使用队列名称并且只能使用@Inject 装饰器访问一个队列。有没有其他方法可以排队?
解决方法
我这样做是为了做我想做的事:
@Injectable()
export class BullService implements OnModuleInit {
public queues: Queue[] = [];
constructor(private readonly moduleRef: ModuleRef) {}
onModuleInit(): any {
this.queues = QUEUE_NAMES.map((name) =>
this.moduleRef.get(getQueueToken(name),{ strict: false }));
setQueues(this.queues.map((queue) => new BullAdapter(queue)));
}
}