UNPKG

@cleardu/rmq

Version:

Nest - modern, fast, powerful node.js web framework (@rmq)

88 lines (85 loc) 2.76 kB
import { DynamicModule, Module } from '@nestjs/common'; import { RmqService } from './rmq.service'; import { RmqBroadcastModuleDefinition } from './rmq-broadcast.module-definition'; import { AmqpConnection, AmqpConnectionManager, RabbitMQModule } from '@golevelup/nestjs-rabbitmq'; @Module({ providers: [RmqService], exports: [], }) export class RmqBroadCastModule extends RmqBroadcastModuleDefinition.ConfigurableModuleClass { static forRoot(options: { config: { uri: string } }): DynamicModule { return { module: RmqBroadCastModule, imports: [ RabbitMQModule.forRoot(RabbitMQModule, { exchanges: [ { name: 'agent.exchange', type: 'fanout', }, { name: 'call.exchange', type: 'fanout', }, ], uri: options.config.uri, connectionInitOptions: { wait: false }, enableControllerDiscovery: true, channels: { 'socket-channel': { prefetchCount: 15, default: true, }, }, }), ], exports: [ RabbitMQModule, RmqBroadCastModule, AmqpConnection, AmqpConnectionManager, ], }; } static forRootAsync( options: typeof RmqBroadcastModuleDefinition.ASYNC_OPTIONS_TYPE, ): DynamicModule { return { module: RmqBroadCastModule, imports: [ ...(options.imports || []), RabbitMQModule.forRootAsync(RabbitMQModule, { useFactory: async (...args) => { const opt = await options.useFactory!(...args); return { exchanges: [ { name: 'agent.exchange', type: 'fanout', }, { name: 'call.exchange', type: 'fanout', }, ], uri: opt.config?.uri || '', connectionInitOptions: { wait: false }, enableControllerDiscovery: true, channels: { 'socket-channel': { prefetchCount: 15, default: true, }, }, }; }, inject: (options.inject as any) || [], imports: options.imports || [], } ), ], exports: [RabbitMQModule, RmqBroadCastModule], }; } }