import { RabbitMQModule } from '@golevelup/nestjs-rabbitmq'; import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { AdMessagerController } from './adapters/primaries/ad-messager.controller'; @Module({ imports: [ RabbitMQModule.forRootAsync(RabbitMQModule, { imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ exchanges: [ { name: configService.get('RMQ_EXCHANGE'), type: 'topic', }, ], handlers: { adCreated: { exchange: configService.get('RMQ_EXCHANGE'), routingKey: 'ad.created', queue: `${configService.get( 'RMQ_EXCHANGE', )}-matcher-ad-created`, }, }, uri: configService.get('RMQ_URI'), connectionInitOptions: { wait: false }, enableControllerDiscovery: true, }), inject: [ConfigService], }), ], controllers: [AdMessagerController], providers: [], exports: [], }) export class AdModule {}