@bull-board/nestjs
NestJS for bull-board
.
Installation
Install both @bull-board/api and this module.
$ npm install --save @bull-board/nestjs @bull-board/api
Install the Express or Fastify adapter depending on what you use in NestJS (default is Express)
$ npm install --save @bull-board/express
//or
$ npm install --save @bull-board/fastify
Register the root module
Once the installation is completed, we can import the BullBoardModule
into your rootmodule e.g. AppModule
.
import { Module } from '@nestjs/common';
import { BullBoardModule } from "@bull-board/nestjs";
import { ExpressAdapter } from "@bull-board/express";
@Module({
imports: [
BullModule.forRoot({
}),
BullBoardModule.forRoot({
route: '/queues',
adapter: ExpressAdapter
}),
],
})
export class AppModule {
}
The forRoot()
method registers the bull-board instance and allows you to pass several options to both the instance and module.
The following options are available.
route
the base route for the bull-board instance adapter.adapter
The routing adapter to be used, either the Express Adapter or Fastify Adapter provided by bull-board.boardOptions
options as provided by the bull-board package, such as uiBasePath
and uiConfig
middleware
optional middleware for the express adapter (e.g. basic authentication)
Register your queues
To register a new queue, you need to register BullBoardModule.forFeature
in the same module as where your queues are registered.
import { Module } from '@nestjs/common';
import { BullBoardModule } from "@bull-board/nestjs";
import { BullModule } from "@nestjs/bullmq";
@Module({
imports: [
BullModule.registerQueue(
{
name: 'my_awesome_queue'
}
),
BullBoardModule.forFeature({
name: 'my_awesome_queue',
adapter: BullMQAdapter,
}),
],
})
export class FeatureModule {}
The forFeature
method registers the given queues to the bull-board instance.
The following options are available.
name
the queue name to registeradapter
either BullAdapter
or BullMQAdapter
depending on which package you use.options
queue adapter options as found in the bull-board package, such as readOnlyMode
, description
etc.
Using the bull-board instance in your controllers and/or services.
The created bull-board instance is available via the @InjectBullBoard()
decorator.
For example in a controller:
import { Controller, Get } from "@nestjs/common";
import { BullBoardInstance, InjectBullBoard } from "@bull-board/nestjs";
@Controller('my-feature')
export class FeatureController {
constructor(
@InjectBullBoard() private readonly boardInstance: BullBoardInstance
) {
}
}
Usage examples
- Simple NestJS setup
For more info visit the main README