Does anyone know how to register multiple queues with Bullboard Module and NestJS. Every documentation I have found show an example of how to register a single queue as seen below:
Bullboard Docs: https://github.com/felixmosh/bull-board/tree/master/packages/nestjs
@Module({
imports: [
BullModule.registerQueue(
{
name: 'my_awesome_queue'
}
),
BullBoardModule.forFeature({
name: 'my_awesome_queue',
adapter: BullMQAdapter, //or use BullAdapter if you're using bull instead of bullMQ
}),
],
})
export class FeatureModule {}
However what are you supposed to do when you have a module with multiple queues which seems like a common use case as seen below?
BullModule.registerQueue(
{
name: "download-youtube-queue",
},
{
name: "upload-media-queue",
},
{
name: "transcribe-queue",
},
),
Seems like there should be a simple way to handle this.
According BullBoard module code, you can provide several BullBoardQueueOptions
to forFeature
method:
export declare class BullBoardModule {
static forFeature(...queues: BullBoardQueueOptions[]): DynamicModule;
static forRoot(options: BullBoardModuleOptions): DynamicModule;
}
export type BullBoardQueueOptions = {
name: string;
adapter: {
new (queue: any, options?: Partial<QueueAdapterOptions>): BaseAdapter;
};
options?: Partial<QueueAdapterOptions>;
}
So you can register multiple queues in Bull Board like this:
@Module({
imports: [
BullModule.registerQueue(
{
name: 'my_awesome_queue'
},
{
name: 'another_awesome_queue'
}
),
BullBoardModule.forFeature(
{
name: 'my_awesome_queue',
adapter: BullMQAdapter, //or use BullAdapter if you're using bull instead of bullMQ
},
{
name: 'another_awesome_queue',
adapter: BullMQAdapter, //or use BullAdapter if you're using bull instead of bullMQ
}
),
],
})
export class FeatureModule {}
Or you can register several queues in separate modules:
//awesome.module.ts
@Module({
imports: [
BullModule.registerQueue(
{
name: 'my_awesome_queue'
}
),
BullBoardModule.forFeature({
name: 'my_awesome_queue',
adapter: BullMQAdapter, //or use BullAdapter if you're using bull instead of bullMQ
}),
],
})
export class AwesomeModule {}
//anotherAwesome.module.ts
@Module({
imports: [
BullModule.registerQueue(
{
name: 'another_awesome_queue'
}
),
BullBoardModule.forFeature({
name: 'another_awesome_queue',
adapter: BullMQAdapter, //or use BullAdapter if you're using bull instead of bullMQ
}),
],
})
export class AnotherAwesomeModule {}