-
Notifications
You must be signed in to change notification settings - Fork 102
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
registerAsync Error version 0.8.4 #164
Comments
@jayakusumah Thanks for reporting this I'll try to look into this issue in the next few days. It'd be great if, in the meantime, you could provide some code reproducing this error, or even submit a PR with failing tests. |
I got the same problem: controllers in others module cannot inject queue defined in another module. I tried exports processors, import queue defined module but no luck. https://github.com/smonv/bull-queue-test here is code for quick setup demo the problem |
I found a workaround to solve this problem. Instead of directed inject queue inside controller, indirect inject queue by a service. Create a task service inside |
Same issue, in my case I need to use |
@smonv The queue can only be injected in the scope where @captainjapeng might be right here. There seems to be a confusion between the name of the options and the name of the queue. I'll see what can be done to prevent this kind of error. EDIT:
|
I'm experiencing this same problem. Is there a work around at this moment? |
Yes, you'll need to create a module to reexport the BullModule Here's an example: import { BullModule, BullModuleOptions } from 'nest-bull'
import { Module } from '@nestjs/common'
import { ConfigModule } from 'src/config/config.module'
import { ConfigService } from 'src/config/config.service'
function redisOptions(configService: ConfigService) {
return {
host: configService.getString('REDIS_HOST'),
port: configService.getInt('REDIS_PORT'),
}
}
const BullQueueModule = BullModule.registerAsync([
{
name: 'email',
imports: [ConfigModule],
useFactory: (configService: ConfigService): BullModuleOptions => {
return {
name: 'email',
options: {
redis: redisOptions(configService),
},
}
},
inject: [ConfigService],
},
{
name: 'cron',
imports: [ConfigModule],
useFactory: (configService: ConfigService): BullModuleOptions => {
return {
name: 'cron',
options: {
redis: redisOptions(configService),
},
}
},
inject: [ConfigService],
},
])
@Module({
imports: [BullQueueModule],
exports: [BullQueueModule],
})
export class QueueModule { } |
had the same issue. |
Hi @captainjapeng , Could you please share full example with usage, I tried re-export but still got same error. |
@maxymshg you'll need to import the email.module.ts @Module({
imports: [
forwardRef(() => QueueModule),
],
providers: [EmailService, CronProcessor],
exports: [EmailService],
})
export class EmailModule {} cron.processor.ts @Injectable()
@Processor({ name: 'cron' })
export class CronProcessor {
private readonly logger = new Logger('EmailCron')
constructor(
@InjectQueue('email')
private queueService: Queue<EmailJob>,
@InjectQueue('cron')
private cron: Queue,
) {
this.logger.log('Intializing Cron Processor')
cron.add(null, {
repeat: { cron: '0 0 1-2 * * *' },
jobId: 'resume-email',
})
}
@Process()
async process(job: Job) {
this.logger.log('Resuming Email Service')
await this.queueService.resume()
}
} Here's an example of a cron job that resume the email queue every 1-2 AM UTC if ever the quota has been reached. |
Got it, thanks for sharing this. |
Hi, I tried it, but i have the same problem. When you give a name (@processor({ name: 'foo' }), this.moduleRef.get cannot find the object. But it work very well with @processor({ name: '' }) and InjectQueue(''). |
Let's track this here #171 |
I get an error Nest can't resolve dependencies of the controller (service, ?).... Please make sure that the argument at index [1] is available when using BullModule.registerAsync, but it works fine when using BullModule.register(). I use a shared module, and import it in another module.
nest-bull version 0.8.4
The text was updated successfully, but these errors were encountered: