@bgaldino/nestjs-rabbitmq 2.0.0-beta.4 → 2.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,11 +10,12 @@ An opinionated NestJS module for RabbitMQ with built-in retry strategies, dead l
10
10
  - [forRoot](#forroot)
11
11
  - [forRootAsync](#forrootasync)
12
12
  - [Consumers](#consumers)
13
+ - [Enabling consumers](#enabling-consumers)
14
+ - [Selective consumer activation](#selective-consumer-activation)
13
15
  - [Decorator-based consumers](#decorator-based-consumers)
14
16
  - [Config-based consumers](#config-based-consumers)
15
17
  - [Mixed usage](#mixed-usage)
16
18
  - [Handler signature](#handler-signature)
17
- - [Consumer groups](#consumer-groups)
18
19
  - [Publishers](#publishers)
19
20
  - [Publishing messages](#publishing-messages)
20
21
  - [Typed publishing](#typed-publishing)
@@ -27,7 +28,6 @@ An opinionated NestJS module for RabbitMQ with built-in retry strategies, dead l
27
28
  - [Disabling the automatic ack](#disabling-the-automatic-ack)
28
29
  - [Custom Header Metadata](#custom-header-metadata)
29
30
  - [Extra Options](#extra-options)
30
- - [Consumer manual loading](#consumer-manual-loading)
31
31
  - [Message inspection and logging](#message-inspection-and-logging)
32
32
  - [Health check](#health-check)
33
33
  - [Building locally](#building-locally)
@@ -57,8 +57,13 @@ and dead letter exchanges instead of the delayed message plugin.
57
57
 
58
58
  ## Getting Started
59
59
 
60
- The `RabbitMQModule` is marked as `@Global`, so importing it once is enough
61
- to inject `RabbitMQService` anywhere in your application.
60
+ `RabbitMQModule.forRoot()` is marked as `@Global`, so importing it once is
61
+ enough to inject `RabbitMQService` anywhere in your application. It handles
62
+ connections and publishing.
63
+
64
+ To enable consumers, import `RabbitMQModule.withConsumers()` alongside
65
+ `forRoot()`. Without it, only publisher connections are opened and no messages
66
+ are consumed.
62
67
 
63
68
  ### forRoot
64
69
 
@@ -77,6 +82,7 @@ import { RabbitMQModule } from '@bgaldino/nestjs-rabbitmq';
77
82
  { name: 'notifications', type: 'fanout' },
78
83
  ],
79
84
  }),
85
+ RabbitMQModule.withConsumers(),
80
86
  ],
81
87
  })
82
88
  export class AppModule {}
@@ -139,6 +145,81 @@ All queues are created as [quorum queues](https://www.rabbitmq.com/docs/quorum-q
139
145
  by default. Consumers do not create exchanges, they only bind to exchanges
140
146
  that already exist (declared via `assertExchanges`).
141
147
 
148
+ Consumers are only activated when `RabbitMQModule.withConsumers()` is imported.
149
+ Without it, no consumer connections are opened and no messages are consumed.
150
+
151
+ ### Enabling consumers
152
+
153
+ Import `withConsumers()` alongside `forRoot()` to enable consumer discovery
154
+ and activation. The no-arg form discovers all `@RabbitConsumer` decorated
155
+ methods across the application and processes all `consumerChannels` from the
156
+ connection config:
157
+
158
+ ```typescript
159
+ @Module({
160
+ imports: [
161
+ RabbitMQModule.forRoot({ ... }),
162
+ RabbitMQModule.withConsumers(),
163
+ ],
164
+ })
165
+ export class AppModule {}
166
+ ```
167
+
168
+ ### Selective consumer activation
169
+
170
+ When your application has multiple deployments (e.g., an API server and a
171
+ background worker), you can pass explicit handler classes to `withConsumers()`
172
+ to control which consumers are activated in each deployment:
173
+
174
+ ```typescript
175
+ // API deployment — publish only, no consumers
176
+ @Module({
177
+ imports: [
178
+ RabbitMQModule.forRoot({ ... }),
179
+ ],
180
+ })
181
+ export class ApiAppModule {}
182
+
183
+ // Worker deployment — only order and payment consumers
184
+ @Module({
185
+ imports: [
186
+ RabbitMQModule.forRoot({ ... }),
187
+ RabbitMQModule.withConsumers([OrderHandler, PaymentHandler]),
188
+ ],
189
+ })
190
+ export class WorkerAppModule {}
191
+
192
+ // Report deployment — only report consumers
193
+ @Module({
194
+ imports: [
195
+ RabbitMQModule.forRoot({ ... }),
196
+ RabbitMQModule.withConsumers([ReportHandler]),
197
+ ],
198
+ })
199
+ export class ReportAppModule {}
200
+ ```
201
+
202
+ When handler classes are passed, only `@RabbitConsumer` methods on those
203
+ classes are activated. Config consumers (`consumerChannels`) are always
204
+ processed regardless.
205
+
206
+ Keep in mind that all `@RabbitConsumer` methods on a given class are
207
+ activated together. If a class has consumers meant for different deployments,
208
+ split it into separate classes — one per deployment concern:
209
+
210
+ ```typescript
211
+ // Each class serves a single deployment
212
+ class OrderCreateHandler {
213
+ @RabbitConsumer({ queue: 'orders.create', ... })
214
+ async handle() { ... }
215
+ }
216
+
217
+ class OrderReportHandler {
218
+ @RabbitConsumer({ queue: 'orders.report', ... })
219
+ async handle() { ... }
220
+ }
221
+ ```
222
+
142
223
  ### Decorator-based consumers
143
224
 
144
225
  Decorate any method with `@RabbitConsumer()` and the library will
@@ -252,32 +333,6 @@ export class OrderService implements ConsumerHandler<OrderPayload> {
252
333
  }
253
334
  ```
254
335
 
255
- ### Consumer groups
256
-
257
- Groups allow you to control which consumers are enabled on a given deployment.
258
- This is useful when multiple instances of the same application serve different
259
- roles.
260
-
261
- ```typescript
262
- @RabbitConsumer({
263
- queue: 'heavy.processing',
264
- exchangeName: 'jobs',
265
- routingKey: 'heavy.*',
266
- group: 'workers',
267
- })
268
- async processHeavyJob(content: any) { ... }
269
- ```
270
-
271
- The active group is determined by:
272
-
273
- 1. The `RMQ_CONSUMER_GROUP` environment variable (highest priority)
274
- 2. The `group` parameter passed to `createConsumers(group)`
275
- 3. Defaults to `"rabbit-default"`
276
-
277
- Consumers without an explicit group are assigned to the active group and will
278
- always be initialized. Consumers with a group that does not match the active
279
- group are skipped.
280
-
281
336
  ## Publishers
282
337
 
283
338
  ### Publishing messages
@@ -494,28 +549,6 @@ to call if it is in the same class. The method should implement the interface:
494
549
  function (content: T): Promise<boolean> | boolean;
495
550
  ```
496
551
 
497
- ## Disabling the automatic ack
498
-
499
- By default, the consumer automatically acknowledges the message after the
500
- handler completes. If you need manual control over acknowledgement, disable it:
501
-
502
- ```typescript
503
- @RabbitConsumer({
504
- queue: 'order.process',
505
- exchangeName: 'orders',
506
- routingKey: 'order.process',
507
- autoAck: false,
508
- })
509
- async processOrder(content: OrderPayload, params: MessageParams) {
510
- // do work
511
- params.channel.ack(params.message);
512
- }
513
- ```
514
-
515
- When `autoAck` is disabled, you are responsible for calling `channel.ack()` or
516
- `channel.nack()`. If you do not acknowledge the message, it will remain
517
- unacknowledged and RabbitMQ will redeliver it when the consumer disconnects.
518
-
519
552
  ## Custom Header Metadata
520
553
 
521
554
  Every published message includes the following custom headers automatically:
@@ -537,41 +570,6 @@ when available, falling back to the message's current routing key.
537
570
 
538
571
  ## Extra Options
539
572
 
540
- ### Consumer manual loading
541
-
542
- Consumers are attached during the `OnApplicationBootstrap` lifecycle, which
543
- means the application begins receiving messages as soon as all modules are
544
- initialized, but before `app.listen()` resolves.
545
-
546
- If you need consumers to start only after the HTTP server is ready (or need
547
- to defer startup for any other reason), set `consumerManualLoad: true` and
548
- call the initialization manually:
549
-
550
- ```typescript
551
- RabbitMQModule.forRoot({
552
- connectionString: 'amqp://localhost',
553
- delayExchangeName: 'my_app',
554
- assertExchanges: [],
555
- extraOptions: {
556
- consumerManualLoad: true,
557
- },
558
- })
559
- ```
560
-
561
- ```typescript
562
- async function bootstrap() {
563
- const app = await NestFactory.create(AppModule);
564
- await app.listen(3000);
565
-
566
- const rabbit = app.get(RabbitMQService);
567
- await rabbit.startConsumers();
568
- }
569
- bootstrap();
570
- ```
571
-
572
- You can also pass a group name to `startConsumers(group)` to initialize only consumers
573
- belonging to that group.
574
-
575
573
  ### Message inspection and logging
576
574
 
577
575
  You can inspect consumer and publisher messages by setting `extraOptions.logType`
@@ -595,12 +593,15 @@ connections:
595
593
  const rabbit = app.get(RabbitMQService);
596
594
 
597
595
  // Check all connections (returns 0 if any connection is offline)
598
- const status = rabbit.checkHealth(); // 1 = online, 0 = offline
596
+ const status = await rabbit.checkHealth(); // 1 = online, 0 = offline
599
597
 
600
598
  // Check a specific connection
601
- const sharedStatus = rabbit.checkHealth('shared-bus');
599
+ const sharedStatus = await rabbit.checkHealth('shared-bus');
602
600
  ```
603
601
 
602
+ When `withConsumers()` is not imported, the health check only verifies
603
+ publisher connections.
604
+
604
605
  ## Building locally
605
606
 
606
607
  ```shell
@@ -1,24 +1,23 @@
1
- import { OnApplicationBootstrap, OnApplicationShutdown, OnModuleInit } from "@nestjs/common";
2
- import { LogType, ModuleOptions } from "./rabbitmq.types";
3
- import { ClassDiscovery } from "./class-discovery";
1
+ import { OnApplicationShutdown, OnModuleInit } from "@nestjs/common";
2
+ import { LogType, ModuleOptions, RabbitMQConsumerResolved } from "./rabbitmq.types";
4
3
  import { ConnectionHolder } from "./connection-factory";
5
- export declare class AMQPConnectionManager implements OnModuleInit, OnApplicationBootstrap, OnApplicationShutdown {
6
- private readonly classDiscovery;
4
+ export declare class AMQPConnectionManager implements OnModuleInit, OnApplicationShutdown {
7
5
  private readonly logger;
8
6
  private defaultOptions;
9
7
  private opts;
10
8
  private connections;
11
9
  private connectionFactory;
12
- consumerInitialized: boolean;
13
- constructor(options: ModuleOptions, classDiscovery: ClassDiscovery);
10
+ private resolveConnection;
11
+ private readonly connectionReady;
12
+ constructor(options: ModuleOptions);
14
13
  onModuleInit(): Promise<void>;
15
- onApplicationBootstrap(): Promise<void>;
14
+ private connectPublishers;
16
15
  getLogType(): LogType;
16
+ ensureConnected(): Promise<void>;
17
17
  getConnectionHolder(name?: string): ConnectionHolder;
18
18
  getAllConnections(): ConnectionHolder[];
19
- createConsumers(group?: string): Promise<void>;
19
+ activateConsumers(consumers: RabbitMQConsumerResolved[]): Promise<void>;
20
20
  onApplicationShutdown(): Promise<void>;
21
21
  private resolveConnections;
22
- private connect;
23
22
  private buildConsumer;
24
23
  }
@@ -18,93 +18,76 @@ const common_1 = require("@nestjs/common");
18
18
  const helper_1 = require("./helper");
19
19
  const rabbitmq_consumer_1 = require("./rabbitmq-consumer");
20
20
  const rabbitmq_constants_1 = require("./rabbitmq.constants");
21
- const class_discovery_1 = require("./class-discovery");
22
21
  const connection_factory_1 = require("./connection-factory");
23
22
  let AMQPConnectionManager = AMQPConnectionManager_1 = class AMQPConnectionManager {
24
- constructor(options, classDiscovery) {
23
+ constructor(options) {
25
24
  var _a, _b;
26
- this.classDiscovery = classDiscovery;
25
+ this.logger = new common_1.Logger(AMQPConnectionManager_1.name);
27
26
  this.defaultOptions = {
28
27
  extraOptions: {
29
28
  logType: "none",
30
- consumerManualLoad: false,
31
29
  heartbeatIntervalInSeconds: 0,
32
30
  reconnectTimeInSeconds: 5,
33
31
  },
34
32
  };
35
33
  this.connections = new Map();
36
- this.consumerInitialized = false;
37
34
  this.opts = (0, helper_1.merge)(this.defaultOptions, options);
38
35
  this.opts.extraOptions.logType = (_b = (_a = process.env) === null || _a === void 0 ? void 0 : _a.RABBITMQ_LOG_TYPE) !== null && _b !== void 0 ? _b : this.opts.extraOptions.logType;
39
- this.logger = new common_1.Logger(AMQPConnectionManager_1.name);
40
36
  this.connectionFactory = new connection_factory_1.ConnectionFactory(this.opts);
37
+ this.connectionReady = new Promise(resolve => {
38
+ this.resolveConnection = resolve;
39
+ });
41
40
  }
42
41
  async onModuleInit() {
43
- return this.connect();
42
+ await this.connectPublishers();
43
+ this.resolveConnection();
44
44
  }
45
- async onApplicationBootstrap() {
46
- if (this.opts.extraOptions.consumerManualLoad)
47
- return;
48
- await this.createConsumers();
49
- this.logger.debug("Initiating RabbitMQ consumers automatically");
45
+ async connectPublishers() {
46
+ const configs = this.resolveConnections();
47
+ for (const config of configs) {
48
+ const holder = await this.connectionFactory.createPublisher(config);
49
+ this.connections.set(config.name, holder);
50
+ }
50
51
  }
51
52
  getLogType() {
52
53
  return this.opts.extraOptions.logType;
53
54
  }
55
+ async ensureConnected() {
56
+ await this.connectionReady;
57
+ }
54
58
  getConnectionHolder(name = "default") {
55
59
  const holder = this.connections.get(name);
56
60
  if (!holder) {
57
- throw new Error(`RabbitMQModule: Connection "${name}" not found. Available: ${[...this.connections.keys()].join(", ")}`);
61
+ const available = [...this.connections.keys()];
62
+ const hint = available.length === 0
63
+ ? " Connections may not have been established yet. Ensure RabbitMQModule is imported before modules that depend on it."
64
+ : "";
65
+ throw new Error(`RabbitMQModule: Connection "${name}" not found. Available: ${available.join(", ")}.${hint}`);
58
66
  }
59
67
  return holder;
60
68
  }
61
69
  getAllConnections() {
62
70
  return [...this.connections.values()];
63
71
  }
64
- async createConsumers(group) {
65
- var _a, _b, _c, _d, _e, _f, _g, _h;
66
- if (this.consumerInitialized)
67
- throw new Error("RabbitMQModule: Consumers are already initialized.");
68
- const consumerGroup = (_e = (_d = (_c = (_b = (_a = process.env) === null || _a === void 0 ? void 0 : _a.RMQ_CONSUMER_GROUP) === null || _b === void 0 ? void 0 : _b.toLocaleLowerCase()) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : group) !== null && _e !== void 0 ? _e : "rabbit-default";
69
- if (consumerGroup !== "rabbit-default") {
70
- this.logger.log(`Initializing consumers with group: ${consumerGroup}`);
71
- }
72
- else {
73
- this.logger.log(`No groups associated, initializing all consumers without groups`);
74
- }
75
- const allConsumers = [];
76
- for (const [connName, holder] of this.connections) {
77
- const configConsumers = this.classDiscovery
78
- .getConfigConsumers((_f = holder.config.consumerChannels) !== null && _f !== void 0 ? _f : [])
79
- .map(c => (Object.assign(Object.assign({}, c), { connection: connName })));
80
- allConsumers.push(...configConsumers);
72
+ async activateConsumers(consumers) {
73
+ var _a;
74
+ for (const [, holder] of this.connections) {
75
+ if (!holder.consumerConn) {
76
+ await this.connectionFactory.attachConsumer(holder);
77
+ }
81
78
  }
82
- const decoratorConsumers = this.classDiscovery.discoverDecoratedConsumers();
83
- allConsumers.push(...decoratorConsumers);
84
79
  const dupQueues = new Set();
85
- for (const c of allConsumers) {
86
- if (dupQueues.has(c.queue)) {
87
- throw new Error(`RabbitMQModule: Duplicate queue name "${c.queue}" found across config and decorator consumers.`);
88
- }
80
+ for (const c of consumers) {
81
+ if (dupQueues.has(c.queue))
82
+ throw new Error(`Duplicate queue "${c.queue}"`);
89
83
  dupQueues.add(c.queue);
90
84
  }
91
- for (const consumer of allConsumers) {
92
- consumer.group = (_g = consumer.group) !== null && _g !== void 0 ? _g : consumerGroup;
93
- if (consumer.group !== consumerGroup)
94
- continue;
95
- if (consumer.enabled === false) {
96
- this.logger.debug({ type: "initialization", title: `[AMQP] [INIT] Consumer ${consumer.queue} is DISABLED` });
85
+ for (const consumer of consumers) {
86
+ if (consumer.enabled === false)
97
87
  continue;
98
- }
99
- const connName = (_h = consumer.connection) !== null && _h !== void 0 ? _h : "default";
88
+ const connName = (_a = consumer.connection) !== null && _a !== void 0 ? _a : "default";
100
89
  await this.buildConsumer(connName).createConsumer(consumer, consumer.handler);
101
- this.logger.debug({
102
- type: "initialization",
103
- title: `[AMQP] [INIT] Initializing consumer ${consumer.queue}`,
104
- binding: { exchange: consumer.exchangeName, routingKey: consumer.routingKey, group: consumer.group },
105
- });
106
90
  }
107
- this.consumerInitialized = true;
108
91
  }
109
92
  async onApplicationShutdown() {
110
93
  var _a, _b;
@@ -134,13 +117,6 @@ let AMQPConnectionManager = AMQPConnectionManager_1 = class AMQPConnectionManage
134
117
  consumerChannels: this.opts.consumerChannels,
135
118
  }];
136
119
  }
137
- async connect() {
138
- const configs = this.resolveConnections();
139
- for (const config of configs) {
140
- const holder = await this.connectionFactory.create(config);
141
- this.connections.set(config.name, holder);
142
- }
143
- }
144
120
  buildConsumer(connectionName = "default") {
145
121
  const holder = this.getConnectionHolder(connectionName);
146
122
  return new rabbitmq_consumer_1.RabbitMQConsumer(holder.consumerConn, holder.config.delayExchangeName, this.opts.extraOptions.logType, holder.publisherWrapper);
@@ -150,6 +126,6 @@ exports.AMQPConnectionManager = AMQPConnectionManager;
150
126
  exports.AMQPConnectionManager = AMQPConnectionManager = AMQPConnectionManager_1 = __decorate([
151
127
  (0, common_1.Injectable)(),
152
128
  __param(0, (0, common_1.Inject)(rabbitmq_constants_1.RABBIT_OPTIONS)),
153
- __metadata("design:paramtypes", [Object, class_discovery_1.ClassDiscovery])
129
+ __metadata("design:paramtypes", [Object])
154
130
  ], AMQPConnectionManager);
155
131
  //# sourceMappingURL=amqp-connection-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"amqp-connection-manager.js","sourceRoot":"","sources":["../src/amqp-connection-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"amqp-connection-manager.js","sourceRoot":"","sources":["../src/amqp-connection-manager.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class ClassDiscovery {
9
9
  constructor(discoveryService: DiscoveryService, metadataScanner: MetadataScanner, reflector: Reflector);
10
10
  getProviderInstance<T>(provider: Type<T>): T;
11
11
  discoverDecoratedConsumers(): Array<RabbitMQConsumerResolved>;
12
+ discoverFromClasses(classes: Type[]): Array<RabbitMQConsumerResolved>;
12
13
  getConfigConsumers(consumerList: Array<ConsumerChannel>): Array<RabbitMQConsumerResolved>;
13
14
  private resolveStrategyMethods;
14
15
  }
@@ -55,6 +55,25 @@ let ClassDiscovery = class ClassDiscovery {
55
55
  }
56
56
  return discovered;
57
57
  }
58
+ discoverFromClasses(classes) {
59
+ const discovered = [];
60
+ for (const cls of classes) {
61
+ const wrapper = this.wrappers.find(w => w.metatype === cls);
62
+ if (!(wrapper === null || wrapper === void 0 ? void 0 : wrapper.instance)) {
63
+ throw new Error(`RabbitMQModule: Provider ${cls.name} not found. Is it registered in a module?`);
64
+ }
65
+ const { instance } = wrapper;
66
+ const methods = this.metadataScanner.getAllMethodNames(instance);
67
+ for (const method of methods) {
68
+ const meta = this.reflector.get(rabbit_consumer_decorator_1.RABBIT_HANDLER_METADATA, instance[method]);
69
+ if (!meta)
70
+ continue;
71
+ this.resolveStrategyMethods(meta, instance);
72
+ discovered.push(Object.assign(Object.assign({}, meta), { handler: instance[method].bind(instance) }));
73
+ }
74
+ }
75
+ return discovered;
76
+ }
58
77
  getConfigConsumers(consumerList) {
59
78
  const consumers = [];
60
79
  for (const consumer of consumerList !== null && consumerList !== void 0 ? consumerList : []) {
@@ -1 +1 @@
1
- {"version":3,"file":"class-discovery.js","sourceRoot":"","sources":["../src/class-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-discovery.js","sourceRoot":"","sources":["../src/class-discovery.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { AmqpConnectionManager, ChannelWrapper } from "amqp-connection-manager";
2
2
  import { ConnectionConfig, ModuleOptions } from "./rabbitmq.types";
3
3
  export type ConnectionHolder = {
4
4
  config: ConnectionConfig;
5
- consumerConn: AmqpConnectionManager;
5
+ consumerConn: AmqpConnectionManager | null;
6
6
  publisherConn: AmqpConnectionManager;
7
7
  publisherWrapper: ChannelWrapper;
8
8
  };
@@ -12,6 +12,8 @@ export declare class ConnectionFactory {
12
12
  private readonly terminalErrors;
13
13
  constructor(opts: ModuleOptions);
14
14
  create(config: ConnectionConfig): Promise<ConnectionHolder>;
15
+ createPublisher(config: ConnectionConfig): Promise<ConnectionHolder>;
16
+ attachConsumer(holder: ConnectionHolder): Promise<void>;
15
17
  private connectBroker;
16
18
  private awaitConnection;
17
19
  private registerConnectionEvents;
@@ -22,6 +22,14 @@ class ConnectionFactory {
22
22
  const publisherWrapper = await this.assertExchanges(publisherConn, config);
23
23
  return { config, consumerConn, publisherConn, publisherWrapper };
24
24
  }
25
+ async createPublisher(config) {
26
+ const publisherConn = await this.connectBroker(config, "publisher");
27
+ const publisherWrapper = await this.assertExchanges(publisherConn, config);
28
+ return { config, consumerConn: null, publisherConn, publisherWrapper };
29
+ }
30
+ async attachConsumer(holder) {
31
+ holder.consumerConn = await this.connectBroker(holder.config, "consumer");
32
+ }
25
33
  async connectBroker(config, type) {
26
34
  const conn = (0, amqp_connection_manager_1.connect)(config.connectionString, this.buildConnectionOptions(`${config.name}-${type}`));
27
35
  await this.awaitConnection(conn, config.name, type);
@@ -1 +1 @@
1
- {"version":3,"file":"connection-factory.js","sourceRoot":"","sources":["../src/connection-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-factory.js","sourceRoot":"","sources":["../src/connection-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { OnApplicationBootstrap, Type } from "@nestjs/common";
2
+ import { AMQPConnectionManager } from "./amqp-connection-manager";
3
+ import { ClassDiscovery } from "./class-discovery";
4
+ export declare class ConsumerActivator implements OnApplicationBootstrap {
5
+ private readonly connManager;
6
+ private readonly classDiscovery;
7
+ private readonly handlers;
8
+ private readonly logger;
9
+ constructor(connManager: AMQPConnectionManager, classDiscovery: ClassDiscovery, handlers: Type[] | null);
10
+ onApplicationBootstrap(): Promise<void>;
11
+ private discoverConsumers;
12
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var ConsumerActivator_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ConsumerActivator = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const amqp_connection_manager_1 = require("./amqp-connection-manager");
19
+ const class_discovery_1 = require("./class-discovery");
20
+ const rabbitmq_constants_1 = require("./rabbitmq.constants");
21
+ let ConsumerActivator = ConsumerActivator_1 = class ConsumerActivator {
22
+ constructor(connManager, classDiscovery, handlers) {
23
+ this.connManager = connManager;
24
+ this.classDiscovery = classDiscovery;
25
+ this.handlers = handlers;
26
+ this.logger = new common_1.Logger(ConsumerActivator_1.name);
27
+ }
28
+ async onApplicationBootstrap() {
29
+ const consumers = this.discoverConsumers();
30
+ if (consumers.length === 0) {
31
+ this.logger.log('No consumers discovered');
32
+ return;
33
+ }
34
+ this.logger.log(`Activating ${consumers.length} consumer(s)`);
35
+ await this.connManager.activateConsumers(consumers);
36
+ }
37
+ discoverConsumers() {
38
+ var _a;
39
+ const all = [];
40
+ if (this.handlers) {
41
+ all.push(...this.classDiscovery.discoverFromClasses(this.handlers));
42
+ }
43
+ else {
44
+ all.push(...this.classDiscovery.discoverDecoratedConsumers());
45
+ }
46
+ // Config consumers from each connection
47
+ for (const holder of this.connManager.getAllConnections()) {
48
+ const configConsumers = this.classDiscovery
49
+ .getConfigConsumers((_a = holder.config.consumerChannels) !== null && _a !== void 0 ? _a : [])
50
+ .map(c => (Object.assign(Object.assign({}, c), { connection: holder.config.name })));
51
+ all.push(...configConsumers);
52
+ }
53
+ return all;
54
+ }
55
+ };
56
+ exports.ConsumerActivator = ConsumerActivator;
57
+ exports.ConsumerActivator = ConsumerActivator = ConsumerActivator_1 = __decorate([
58
+ (0, common_1.Injectable)(),
59
+ __param(2, (0, common_1.Inject)(rabbitmq_constants_1.RABBIT_CONSUMER_HANDLERS)),
60
+ __metadata("design:paramtypes", [amqp_connection_manager_1.AMQPConnectionManager,
61
+ class_discovery_1.ClassDiscovery, Array])
62
+ ], ConsumerActivator);
63
+ //# sourceMappingURL=consumer-activator.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-activator.service.js","sourceRoot":"","sources":["../src/consumer-activator.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA0F;AAC1F,uEAAkE;AAClE,uDAAmD;AACnD,6DAAgE;AAIzD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAG5B,YACmB,WAAkC,EAClC,cAA8B,EAE/C,QAAwC;QAHvB,gBAAW,GAAX,WAAW,CAAuB;QAClC,mBAAc,GAAd,cAAc,CAAgB;QAE9B,aAAQ,GAAR,QAAQ,CAAe;QANzB,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAOzD,CAAC;IAEL,KAAK,CAAC,sBAAsB;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE3C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,MAAM,cAAc,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAEO,iBAAiB;;QACvB,MAAM,GAAG,GAA+B,EAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,wCAAwC;QACxC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc;iBACxC,kBAAkB,CAAC,MAAA,MAAM,CAAC,MAAM,CAAC,gBAAgB,mCAAI,EAAE,CAAC;iBACxD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,iCAAM,CAAC,KAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAG,CAAC,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AAzCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAOR,WAAA,IAAA,eAAM,EAAC,6CAAwB,CAAC,CAAA;qCAFH,+CAAqB;QAClB,gCAAc;GALtC,iBAAiB,CAyC7B"}