Je suis doc pour commencer à utiliser la file d'attente. J'ai installé les dépendances @ nestjs / bull , bull , @ types / bull . Et voici mon app.module.ts :
Nest can't resolve dependencies of the EventService Please make sure that the argument BullQueue_create_checkin at index [0] is available in the EventModule context.
J'ai importé BullModule dans le module racine. Et voici mon event.service.ts:
@Injectable()
export class EventService {
constructor(
@InjectQueue('create_checkin') private readonly createCheckinQueue: Queue,
) {
}
}
Et quand je démarre le serveur, j'ai le message d'erreur suivant:
XXX
Je ne sais pas quelle étape j'ai mal fait. Quelqu'un peut m'aider?
4 Réponses :
Assurez-vous que vous placez EventService sous le tableau des fournisseurs dans EventModule.
@Module({
providers: [EventService],
controllers :[],
imports: [YOUR_MODULES],
exports: [EventService]
})
export class EventModule {}
Essayez d'importer BullModule directement dans Event Module - J'ai eu le même problème et le faire de cette façon le faire fonctionner.
@Module({
imports: [
BullModule.registerQueueAsync({
name: 'csv',
useFactory: async (config: ConfigService) => ({
redis: config.get('redis'),
}),
inject: [ConfigService],
}),
],
providers: [
CsvService
],
exports: [CsvService],
})
export class CsvModule {}
Je sais que c'est une méthode asynchrone, mais vous devriez peut-être essayer.
/ p>
Vous devez importer le module bull dans le module que vous essayez de configurer en file d'attente. Vous pouvez également vous référer à https://medium.com/@shikhar01. cse14 / bull-queues-in-nestjs-306c51cb0ec2
la même chose que j'essayais de montrer dans le code ci-dessus :)
Merci, l'article semble bon, mais il n'y a aucune référence sur la façon de créer le ConfigModule ou ConfigService, ce serait bien si l'auteur avait fourni un exemple de référentiel GitHub.
A eu un problème similaire, dans mon cas, il suffisait d'ajouter le BullModule au tableau exports pour réussir à exécuter l'ensemble du projet. Comme ceci:
@InjectQueue('print') private queue: Queue<PrintJob>
Ensuite, dans mon service, j'ai pu injecter la file d'attente:
@Module({
imports: [
BullModule.registerQueue({ ... }),
...
],
...
exports: [
BullModule, // <â this is important!
...
]
})
Où avez-vous fourni EventService? Pouvez-vous fournir plus de votre code?