@cleardu/rmq
Version:
Nest - modern, fast, powerful node.js web framework (@rmq)
100 lines (99 loc) • 3.95 kB
JavaScript
;
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);