@open-rlb/nestjs-amqp 1.0.25 → 1.0.27

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.
@@ -16,6 +16,7 @@ const auto_discovery_service_1 = require("./services/auto-discovery.service");
16
16
  const broker_service_1 = require("./services/broker.service");
17
17
  const handler_registry_service_1 = require("./services/handler-registry.service");
18
18
  const metadata_scanner_service_1 = require("./services/metadata-scanner.service");
19
+ const shutdown_state_service_1 = require("./services/shutdown-state.service");
19
20
  const utils_service_1 = require("./services/utils.service");
20
21
  _a = new common_1.ConfigurableModuleBuilder().setClassMethodName('forRoot').build(), exports.ConfigurableModuleClass = _a.ConfigurableModuleClass, exports.MODULE_OPTIONS_TOKEN = _a.MODULE_OPTIONS_TOKEN;
21
22
  let BrokerModule = BrokerModule_1 = class BrokerModule {
@@ -118,6 +119,7 @@ exports.BrokerModule = BrokerModule = BrokerModule_1 = __decorate([
118
119
  broker_service_1.BrokerService,
119
120
  handler_registry_service_1.HandlerRegistryService,
120
121
  metadata_scanner_service_1.MetadataScannerService,
122
+ shutdown_state_service_1.ShutdownStateService,
121
123
  auto_discovery_service_1.AutoDiscoveryService,
122
124
  utils_service_1.UtilsService
123
125
  ],
@@ -126,6 +128,7 @@ exports.BrokerModule = BrokerModule = BrokerModule_1 = __decorate([
126
128
  utils_service_1.UtilsService,
127
129
  broker_service_1.BrokerService,
128
130
  auto_discovery_service_1.AutoDiscoveryService,
131
+ shutdown_state_service_1.ShutdownStateService
129
132
  ],
130
133
  })
131
134
  ], BrokerModule);
@@ -1 +1 @@
1
- {"version":3,"file":"broker.module.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/broker/broker.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.module.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/broker/broker.module.ts"],"names":[],"mappings":"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"}
@@ -9,3 +9,5 @@ export * from './pipes';
9
9
  export * from './services/auto-discovery.service';
10
10
  export * from './services/broker.service';
11
11
  export * from './services/handler-registry.service';
12
+ export * from './services/shutdown-state.service';
13
+ export * from './utils/drainable-stream';
@@ -25,4 +25,6 @@ __exportStar(require("./pipes"), exports);
25
25
  __exportStar(require("./services/auto-discovery.service"), exports);
26
26
  __exportStar(require("./services/broker.service"), exports);
27
27
  __exportStar(require("./services/handler-registry.service"), exports);
28
+ __exportStar(require("./services/shutdown-state.service"), exports);
29
+ __exportStar(require("./utils/drainable-stream"), exports);
28
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/broker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wEAAsD;AACtD,kDAAgC;AAChC,yDAAuC;AACvC,+DAA6C;AAC7C,yDAAuC;AACvC,yDAAuC;AACvC,+CAA6B;AAC7B,0CAAwB;AACxB,oEAAkD;AAClD,4DAA0C;AAC1C,sEAAoD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/broker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wEAAsD;AACtD,kDAAgC;AAChC,yDAAuC;AACvC,+DAA6C;AAC7C,yDAAuC;AACvC,yDAAuC;AACvC,+CAA6B;AAC7B,0CAAwB;AACxB,oEAAkD;AAClD,4DAA0C;AAC1C,sEAAoD;AACpD,oEAAkD;AAClD,2DAAyC"}
@@ -0,0 +1,14 @@
1
+ import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
2
+ import { BrokerService } from './broker.service';
3
+ export declare class ShutdownStateService implements OnModuleInit, OnModuleDestroy {
4
+ private readonly brokerService;
5
+ private readonly logger;
6
+ private _isShuttingDown;
7
+ private readonly drainers;
8
+ constructor(brokerService: BrokerService);
9
+ get isShuttingDown(): boolean;
10
+ register(name: string, drain: () => Promise<void>): void;
11
+ onModuleInit(): void;
12
+ onModuleDestroy(): Promise<void>;
13
+ private drainAll;
14
+ }
@@ -0,0 +1,61 @@
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 ShutdownStateService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ShutdownStateService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const broker_service_1 = require("./broker.service");
16
+ const SHUTDOWN_TIMEOUT_MS = 25_000;
17
+ let ShutdownStateService = ShutdownStateService_1 = class ShutdownStateService {
18
+ constructor(brokerService) {
19
+ this.brokerService = brokerService;
20
+ this.logger = new common_1.Logger(ShutdownStateService_1.name);
21
+ this._isShuttingDown = false;
22
+ this.drainers = [];
23
+ }
24
+ get isShuttingDown() {
25
+ return this._isShuttingDown;
26
+ }
27
+ register(name, drain) {
28
+ this.drainers.push({ name, drain });
29
+ }
30
+ onModuleInit() {
31
+ const handleSignal = (signal) => {
32
+ if (this._isShuttingDown)
33
+ return;
34
+ this._isShuttingDown = true;
35
+ this.logger.log(`Shutdown signal '${signal}' received.`);
36
+ setTimeout(() => {
37
+ this.logger.error(`Graceful shutdown timed out after ${SHUTDOWN_TIMEOUT_MS}ms on ${signal}, forcing exit.`);
38
+ process.exit(1);
39
+ }, SHUTDOWN_TIMEOUT_MS).unref();
40
+ };
41
+ process.once('SIGINT', () => handleSignal('SIGINT'));
42
+ process.once('SIGTERM', () => handleSignal('SIGTERM'));
43
+ }
44
+ async onModuleDestroy() {
45
+ await this.brokerService.unregisterAll();
46
+ await this.drainAll();
47
+ }
48
+ async drainAll() {
49
+ if (this.drainers.length === 0)
50
+ return;
51
+ this.logger.log(`Draining ${this.drainers.length} pipeline(s)...`);
52
+ await Promise.all(this.drainers.map(d => d.drain().catch(err => this.logger.error(`Drain failed for ${d.name}: ${err.message}`))));
53
+ this.logger.log('All pipelines drained.');
54
+ }
55
+ };
56
+ exports.ShutdownStateService = ShutdownStateService;
57
+ exports.ShutdownStateService = ShutdownStateService = ShutdownStateService_1 = __decorate([
58
+ (0, common_1.Injectable)(),
59
+ __metadata("design:paramtypes", [broker_service_1.BrokerService])
60
+ ], ShutdownStateService);
61
+ //# sourceMappingURL=shutdown-state.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shutdown-state.service.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/broker/services/shutdown-state.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAmF;AACnF,qDAAiD;AAEjD,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAG5B,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAK/B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAJxC,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,oBAAe,GAAG,KAAK,CAAC;QACf,aAAQ,GAAyD,EAAE,CAAC;IAExB,CAAC;IAE9D,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,KAA0B;QAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,YAAY;QACV,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAE,EAAE;YAC9C,IAAI,IAAI,CAAC,eAAe;gBAAE,OAAO;YACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,MAAM,aAAa,CAAC,CAAC;YACzD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,mBAAmB,SAAS,MAAM,iBAAiB,CAAC,CAAC;gBAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,EAAE,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,iBAAiB,CAAC,CAAC;QACnE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACtC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CACxF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AA1CY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAMiC,8BAAa;GAL9C,oBAAoB,CA0ChC"}
@@ -0,0 +1,8 @@
1
+ import { MonoTypeOperatorFunction } from 'rxjs';
2
+ export declare class DrainableStream {
3
+ private readonly shutdown$;
4
+ private readonly drained$;
5
+ private pendingStreams;
6
+ takeUntilShutdown<T>(): MonoTypeOperatorFunction<T>;
7
+ drain(): Promise<void>;
8
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DrainableStream = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ class DrainableStream {
6
+ constructor() {
7
+ this.shutdown$ = new rxjs_1.Subject();
8
+ this.drained$ = new rxjs_1.ReplaySubject(1);
9
+ this.pendingStreams = 0;
10
+ }
11
+ takeUntilShutdown() {
12
+ this.pendingStreams++;
13
+ return source$ => source$.pipe((0, rxjs_1.takeUntil)(this.shutdown$), (0, rxjs_1.finalize)(() => {
14
+ if (--this.pendingStreams === 0) {
15
+ this.drained$.next();
16
+ this.drained$.complete();
17
+ }
18
+ }));
19
+ }
20
+ async drain() {
21
+ this.shutdown$.next();
22
+ this.shutdown$.complete();
23
+ if (this.pendingStreams > 0) {
24
+ await (0, rxjs_1.firstValueFrom)(this.drained$.pipe((0, rxjs_1.defaultIfEmpty)(undefined)));
25
+ }
26
+ }
27
+ }
28
+ exports.DrainableStream = DrainableStream;
29
+ //# sourceMappingURL=drainable-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drainable-stream.js","sourceRoot":"","sources":["../../../../libs/rlb-nestjs-amqp/src/modules/broker/utils/drainable-stream.ts"],"names":[],"mappings":";;;AAAA,+BAA6H;AAQ7H,MAAa,eAAe;IAA5B;QACmB,cAAS,GAAG,IAAI,cAAO,EAAQ,CAAC;QAChC,aAAQ,GAAG,IAAI,oBAAa,CAAO,CAAC,CAAC,CAAC;QAC/C,mBAAc,GAAG,CAAC,CAAC;IAsB7B,CAAC;IApBC,iBAAiB;QACf,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAC5B,IAAA,gBAAS,EAAC,IAAI,CAAC,SAAS,CAAC,EACzB,IAAA,eAAQ,EAAC,GAAG,EAAE;YACZ,IAAI,EAAE,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAA,qBAAc,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAA,qBAAc,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF;AAzBD,0CAyBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-rlb/nestjs-amqp",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "description": "",
5
5
  "author": "Giuseppe Riolo <riolo.giuseppe@gmail.com>",
6
6
  "private": false,