UNPKG

@cleardu/rmq

Version:

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

100 lines (99 loc) 3.95 kB
"use strict"; var RmqModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.RmqModule = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const microservices_1 = require("@nestjs/microservices"); const rmq_service_1 = require("./rmq.service"); const rmq_module_definition_1 = require("./rmq.module-definition"); let RmqModule = RmqModule_1 = class RmqModule extends rmq_module_definition_1.RmqModuleDefinition.ConfigurableModuleClass { // Static method to register the RMQ module with dynamic options static register({ name, rmqUri }) { return { module: RmqModule_1, imports: [ microservices_1.ClientsModule.registerAsync([ { name, useFactory: () => ({ transport: microservices_1.Transport.RMQ, options: { urls: [rmqUri || ''], queue: `${name}_QUEUE`, queueOptions: { durable: true, }, prefetchCount: 1, }, }), }, ]), ], exports: [microservices_1.ClientsModule, RmqModule_1], }; } static forRoot(options) { return { module: RmqModule_1, imports: [ microservices_1.ClientsModule.registerAsync([ { name: options.config?.name, useFactory: () => ({ transport: microservices_1.Transport.RMQ, options: { urls: [options.config?.uri || ''], queue: `${options.config?.name}_QUEUE`, queueOptions: { durable: true, }, prefetchCount: 1, }, }), }, ]), ], exports: [microservices_1.ClientsModule, RmqModule_1], }; } static forRootAsync(options) { const { config } = options?.useFactory(options.inject[0]); return { module: RmqModule_1, imports: [ ...(options.imports || []), microservices_1.ClientsModule.registerAsync([ { name: config?.name, useFactory: async (...args) => { const opt = await options.useFactory(...args); return { name: opt.config.name, transport: microservices_1.Transport.RMQ, options: { urls: [opt.config.uri || ''], queue: `${opt.config.name}_QUEUE`, queueOptions: { durable: true, }, prefetchCount: 1, }, }; }, inject: options.inject || [], imports: options.imports || [], }, ]), ], exports: [microservices_1.ClientsModule, RmqModule_1], }; } }; exports.RmqModule = RmqModule; exports.RmqModule = RmqModule = RmqModule_1 = tslib_1.__decorate([ (0, common_1.Module)({ providers: [rmq_service_1.RmqService], exports: [], }) ], RmqModule);