Skip to content

Commit

Permalink
fix(): ensure explorer runs only once
Browse files Browse the repository at this point in the history
  • Loading branch information
kamilmysliwiec committed Dec 14, 2019
1 parent 1e0be20 commit 7ce05df
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 26 deletions.
10 changes: 7 additions & 3 deletions lib/bull.explorer.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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,
Expand All @@ -19,6 +19,10 @@ export class BullExplorer {
private readonly logger: Logger,
) {}

onModuleInit() {
this.explore();
}

explore() {
const providers: InstanceWrapper[] = this.discoveryService
.getProviders()
Expand Down Expand Up @@ -57,7 +61,7 @@ export class BullExplorer {

getQueue(queueToken: string, queueName: string): Queue {
try {
return this.moduleRef.get<Queue>(queueToken);
return this.moduleRef.get<Queue>(queueToken, { strict: false });
} catch (err) {
this.logger.error(NO_QUEUE_FOUND(queueName));
throw err;
Expand Down
44 changes: 22 additions & 22 deletions lib/bull.module.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -12,45 +12,49 @@ 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);
const queueOptionProviders = createAsyncQueueOptionsProviders(optionsArr);
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
Expand All @@ -59,8 +63,4 @@ export class BullModule implements OnModuleInit {
.filter((v, i, a) => a.indexOf(v) === i) || []
);
}

onModuleInit() {
this.explorer.explore();
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down

0 comments on commit 7ce05df

Please sign in to comment.