AlariCode / nestjs-rmq

A custom library for NestJS microservice. It allows you to use RabbitMQ or AMQP.
https://purpleschool.ru
MIT License
289 stars 40 forks source link

Example issue with configService? #81

Open crea-vis-art opened 3 months ago

crea-vis-art commented 3 months ago

Hi, I am new at NestJs. Is this example correct? I have no Idea how to get the "configService" as described in the example. I only can find examples with use of "useFactory".

`import { RMQModule } from 'nestjs-rmq';

@Module({ imports: [ RMQModule.forRoot({ exchangeName: configService.get('AMQP_EXCHANGE'), connections: [ { login: configService.get('AMQP_LOGIN'), password: configService.get('AMQP_PASSWORD'), host: configService.get('AMQP_HOST'), }, ], }), ], }) export class AppModule {}`

Sorry but don't get the code formating in the github editor

DIY0R commented 3 months ago

No, you can't write like that. If you want to declare dynamic, you can use forRootAsync and useFactory

kevalin commented 3 months ago

No, you can't write like that. If you want to declare dynamic, you can use forRootAsync and useFactory

exactly!

This is a demo, and hope it can help you. @crea-vis-art first, you need to create a .env file at your project root directory. Sure, you need to set your actual value.

# .env
AMQP_EXCHANGE=demo
AMQP_LOGIN=user
AMQP_PASSWORD=bitnami
AMQP_HOST=rabbitmq.orb.local
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { RMQModule } from 'nestjs-rmq';
import { ConfigService, ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    RMQModule.forRootAsync({
      imports: [ConfigModule.forRoot()],
      useFactory: (configService: ConfigService) => ({
        exchangeName: configService.get<string>('AMQP_EXCHANGE'),
        serviceName: 'demo',
        connections: [
          {
            login: configService.get<string>('AMQP_LOGIN'),
            password: configService.get<string>('AMQP_PASSWORD'),
            host: configService.get<string>('AMQP_HOST'),
          },
        ],
      }),
      inject: [ConfigService],
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}