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?