如何遍历 NestJs Bull 中注册的所有队列?

问题描述

我想遍历所有在 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)));
  }
}