diff --git a/lib/bull.explorer.ts b/lib/bull.explorer.ts index ec043cdea..bc88931c6 100644 --- a/lib/bull.explorer.ts +++ b/lib/bull.explorer.ts @@ -1,4 +1,4 @@ -import { Injectable, Logger } from '@nestjs/common'; +import { Injectable, Logger, OnModuleInit } from '@nestjs/common'; import { DiscoveryService, ModuleRef } from '@nestjs/core'; import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; import { MetadataScanner } from '@nestjs/core/metadata-scanner'; @@ -10,7 +10,7 @@ import { ProcessOptions } from './decorators'; import { getQueueToken } from './utils'; @Injectable() -export class BullExplorer { +export class BullExplorer implements OnModuleInit { constructor( private readonly moduleRef: ModuleRef, private readonly discoveryService: DiscoveryService, @@ -19,6 +19,10 @@ export class BullExplorer { private readonly logger: Logger, ) {} + onModuleInit() { + this.explore(); + } + explore() { const providers: InstanceWrapper[] = this.discoveryService .getProviders() @@ -57,7 +61,7 @@ export class BullExplorer { getQueue(queueToken: string, queueName: string): Queue { try { - return this.moduleRef.get(queueToken); + return this.moduleRef.get(queueToken, { strict: false }); } catch (err) { this.logger.error(NO_QUEUE_FOUND(queueName)); throw err; diff --git a/lib/bull.module.ts b/lib/bull.module.ts index 1bdbc0b3f..45d6f004b 100644 --- a/lib/bull.module.ts +++ b/lib/bull.module.ts @@ -1,4 +1,4 @@ -import { DynamicModule, Logger, Module, OnModuleInit } from '@nestjs/common'; +import { DynamicModule, Logger, Module } from '@nestjs/common'; import { DiscoveryModule } from '@nestjs/core'; import { BullMetadataAccessor } from './bull-metadata.accessor'; import { BullExplorer } from './bull.explorer'; @@ -12,31 +12,21 @@ import { BullModuleOptions, } from './interfaces/bull-module-options.interface'; -@Module({ - imports: [DiscoveryModule], - providers: [ - BullExplorer, - BullMetadataAccessor, - { provide: Logger, useValue: new Logger('BullModule') }, - ], -}) -export class BullModule implements OnModuleInit { - constructor(private readonly explorer: BullExplorer) {} - - static register( - options: BullModuleOptions | BullModuleOptions[], - ): DynamicModule { +@Module({}) +export class BullModule { + static registerQueue(...options: BullModuleOptions[]): DynamicModule { const queueProviders = createQueueProviders([].concat(options)); const queueOptionProviders = createQueueOptionProviders([].concat(options)); return { module: BullModule, + imports: [BullModule.forRoot()], providers: [...queueOptionProviders, ...queueProviders], exports: queueProviders, }; } - static registerAsync( - options: BullModuleAsyncOptions | BullModuleAsyncOptions[], + static registerQueueAsync( + ...options: BullModuleAsyncOptions[] ): DynamicModule { const optionsArr = [].concat(options); const queueProviders = createQueueProviders(optionsArr); @@ -44,13 +34,27 @@ export class BullModule implements OnModuleInit { const imports = this.getUniqImports(optionsArr); return { - imports, + global: true, + imports: imports.concat(BullModule.forRoot()), module: BullModule, providers: [...queueOptionProviders, ...queueProviders], exports: queueProviders, }; } + private static forRoot() { + return { + global: true, + module: BullModule, + imports: [DiscoveryModule], + providers: [ + BullExplorer, + BullMetadataAccessor, + { provide: Logger, useValue: new Logger('BullModule') }, + ], + }; + } + private static getUniqImports(options: BullModuleAsyncOptions[]) { return ( options @@ -59,8 +63,4 @@ export class BullModule implements OnModuleInit { .filter((v, i, a) => a.indexOf(v) === i) || [] ); } - - onModuleInit() { - this.explorer.explore(); - } } diff --git a/package.json b/package.json index 4083fd81b..49df46b24 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nestjs/bull", - "version": "0.0.1-beta.1", + "version": "0.0.1-beta.3", "description": "Nest - modern, fast, powerful node.js web framework (@bull)", "homepage": "https://github.com/nestjs/bull", "bugs": {