@open-rlb/nestjs-amqp 1.0.25 → 1.0.26

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
  ],
@@ -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.26",
4
4
  "description": "",
5
5
  "author": "Giuseppe Riolo <riolo.giuseppe@gmail.com>",
6
6
  "private": false,