@zorionapp/gg-core 5.0.6 → 5.0.7
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/package.json +1 -1
- package/src/gg-micro/gg-rmq.configurator.d.ts +2 -2
- package/src/gg-micro/gg-rmq.configurator.js +10 -1
- package/src/gg-micro/gg-rmq.configurator.js.map +1 -1
- package/src/gg-micro/gg-server-rmq.d.ts +45 -0
- package/src/gg-micro/gg-server-rmq.js +186 -0
- package/src/gg-micro/gg-server-rmq.js.map +1 -0
- package/src/gg-micro/index.d.ts +1 -0
- package/src/gg-micro/index.js +1 -0
- package/src/gg-micro/index.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConfigType } from '@nestjs/config';
|
|
2
|
-
import {
|
|
2
|
+
import { CustomStrategy } from '@nestjs/microservices/interfaces/microservice-configuration.interface';
|
|
3
3
|
import { ClientProviderOptions } from '@nestjs/microservices/module/interfaces/clients-module.interface';
|
|
4
4
|
import { GgMicroService } from './gg-rmq-service.injector';
|
|
5
5
|
import { rmqConfig } from './rmq.config';
|
|
@@ -12,5 +12,5 @@ export declare class GgRmqConfigurator {
|
|
|
12
12
|
* @deprecated - microservice client now registers with MicroModule.forFeature(serviceName)
|
|
13
13
|
*/
|
|
14
14
|
getClientOptions(): ClientProviderOptions;
|
|
15
|
-
getServerOptions():
|
|
15
|
+
getServerOptions(): CustomStrategy;
|
|
16
16
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GgRmqConfigurator = void 0;
|
|
4
4
|
const microservices_1 = require("@nestjs/microservices");
|
|
5
|
+
const gg_server_rmq_1 = require("./gg-server-rmq");
|
|
5
6
|
const rmq_queue_map_1 = require("./rmq.queue-map");
|
|
6
7
|
class GgRmqConfigurator {
|
|
7
8
|
constructor(service, config) {
|
|
@@ -27,7 +28,15 @@ class GgRmqConfigurator {
|
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
getServerOptions() {
|
|
30
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
strategy: new gg_server_rmq_1.GgServerRmq({
|
|
33
|
+
urls: [this.config.urlWithAuth],
|
|
34
|
+
queue: this.getQueue(),
|
|
35
|
+
queueOptions: { durable: true },
|
|
36
|
+
prefetchCount: 10,
|
|
37
|
+
socketOptions: { heartbeatIntervalInSeconds: 30 },
|
|
38
|
+
}),
|
|
39
|
+
};
|
|
31
40
|
}
|
|
32
41
|
}
|
|
33
42
|
exports.GgRmqConfigurator = GgRmqConfigurator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gg-rmq.configurator.js","sourceRoot":"","sources":["../../../../../libs/gg-core/src/gg-micro/gg-rmq.configurator.ts"],"names":[],"mappings":";;;AACA,yDAAkD;
|
|
1
|
+
{"version":3,"file":"gg-rmq.configurator.js","sourceRoot":"","sources":["../../../../../libs/gg-core/src/gg-micro/gg-rmq.configurator.ts"],"names":[],"mappings":";;;AACA,yDAAkD;AAIlD,mDAA8C;AAE9C,mDAA8C;AAE9C,MAAa,iBAAiB;IAC5B,YACmB,OAAuB,EACvB,MAAoC;QADpC,YAAO,GAAP,OAAO,CAAgB;QACvB,WAAM,GAAN,MAAM,CAA8B;IACpD,CAAC;IAEG,QAAQ;QACb,OAAO,IAAA,2BAAW,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,OAAO;YACL,SAAS,EAAE,yBAAS,CAAC,GAAG;YACxB,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBAC/B,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC/B,KAAK,EAAE,IAAA,2BAAW,EAAC,IAAI,CAAC,OAAO,CAAC;aACjC;SACF,CAAC;IACJ,CAAC;IAEM,gBAAgB;QACrB,OAAO;YACL,QAAQ,EAAE,IAAI,2BAAW,CAAC;gBACxB,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC/B,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACtB,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBAC/B,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE,0BAA0B,EAAE,EAAE,EAAE;aAClD,CAAC;SACH,CAAC;IACJ,CAAC;CACF;AArCD,8CAqCC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { RmqContext } from '@nestjs/microservices/ctx-host';
|
|
2
|
+
import { RmqOptions } from '@nestjs/microservices/interfaces/microservice-configuration.interface';
|
|
3
|
+
import { ServerRMQ } from '@nestjs/microservices/server/server-rmq';
|
|
4
|
+
export type GgServerRmqOptions = RmqOptions['options'];
|
|
5
|
+
export declare class GgServerRmq extends ServerRMQ {
|
|
6
|
+
constructor(options: GgServerRmqOptions);
|
|
7
|
+
/**
|
|
8
|
+
* CUSTOMIZED: Forces `noAck: false` regardless of options — we always ack/nack manually.
|
|
9
|
+
* Parent's setupChannel does the same assertQueue + prefetch, but passes noAck from options.
|
|
10
|
+
*/
|
|
11
|
+
setupChannel(channel: any, callback: () => void): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* CUSTOMIZED: Replaces parent's handleMessage to route through our ack/nack logic.
|
|
14
|
+
*
|
|
15
|
+
* Parent's handleMessage dispatches to handleEvent (no packet.id) or processes RPC
|
|
16
|
+
* (with packet.id), but never acks/nacks. We keep the same dispatch logic but add
|
|
17
|
+
* explicit ack/nack at each terminal point.
|
|
18
|
+
*/
|
|
19
|
+
handleMessage(message: Record<string, any>, channel: any): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* CUSTOMIZED: Event handler with native DLQ via nack.
|
|
22
|
+
*
|
|
23
|
+
* - Success → ack
|
|
24
|
+
* - Error → nack(requeue: true) → RMQ retries up to delivery-limit → DLX → DLQ
|
|
25
|
+
* - No handler → nack(requeue: false) → immediate dead-letter (reason: rejected)
|
|
26
|
+
*/
|
|
27
|
+
handleEvent(pattern: string, packet: any, context: RmqContext): Promise<any>;
|
|
28
|
+
/**
|
|
29
|
+
* CUSTOMIZED: RPC handler with explicit ack + error response.
|
|
30
|
+
*
|
|
31
|
+
* RPC is NOT retried — caller has a timeout and expects a response.
|
|
32
|
+
* No DLQ publish for RPC errors — they are reported to the caller.
|
|
33
|
+
*/
|
|
34
|
+
private handleRpcMessage;
|
|
35
|
+
/**
|
|
36
|
+
* Safe ack/nack wrappers. If the channel is closed mid-processing (e.g., consumer_timeout,
|
|
37
|
+
* network drop), amqplib throws synchronously. Without wrapping, this becomes an unhandled
|
|
38
|
+
* promise rejection. The message is safe: RMQ automatically requeues unacked messages
|
|
39
|
+
* when a channel closes. These wrappers just prevent noisy crashes.
|
|
40
|
+
*/
|
|
41
|
+
private safeAck;
|
|
42
|
+
private safeNack;
|
|
43
|
+
/** Duplicated from parent (private in ServerRMQ, can't be inherited) */
|
|
44
|
+
private parseContent;
|
|
45
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GgServerRmq = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Custom RabbitMQ transport strategy, replacing NestJS's built-in ServerRMQ.
|
|
6
|
+
*
|
|
7
|
+
* Why: NestJS ServerRMQ uses `noAck: true` by default — messages are auto-acknowledged
|
|
8
|
+
* on delivery. If a handler throws, the message is silently lost. Setting `noAck: false`
|
|
9
|
+
* doesn't help either: ServerRMQ never calls `channel.ack()` or `channel.nack()`,
|
|
10
|
+
* so messages hang in "unacked" state until RMQ's consumer_timeout kills the consumer.
|
|
11
|
+
*
|
|
12
|
+
* This class adds:
|
|
13
|
+
* - Explicit ack on handler success (both RPC and events)
|
|
14
|
+
* - nack(requeue: true) on @EventPattern error → RMQ retries up to delivery-limit → DLX → DLQ
|
|
15
|
+
* - nack(requeue: false) for unhandled patterns → immediate dead-letter (reason: rejected)
|
|
16
|
+
* - RPC @MessagePattern: fail-fast (error response to caller, no retry/DLQ)
|
|
17
|
+
*
|
|
18
|
+
* DLQ/retry is handled entirely by RMQ infrastructure (quorum queue delivery-limit + DLX policy).
|
|
19
|
+
* No application-level retry or DLQ publishing.
|
|
20
|
+
*
|
|
21
|
+
* Used via `customTransportStrategy` pattern:
|
|
22
|
+
* app.connectMicroservice({ strategy: new GgServerRmq(options) })
|
|
23
|
+
*
|
|
24
|
+
* Upgrade notes:
|
|
25
|
+
* - Written for NestJS 10.3.x + amqplib 0.10.x. Before upgrading NestJS,
|
|
26
|
+
* diff `node_modules/@nestjs/microservices/server/server-rmq.js` for changes
|
|
27
|
+
* in setupChannel / handleMessage / handleEvent.
|
|
28
|
+
* - Observable-returning event handlers are NOT supported. Event handlers must
|
|
29
|
+
* return void or Promise<void>. If NestJS adds Observable-based event patterns,
|
|
30
|
+
* handleEvent needs to be revisited (parent uses connectable().connect() which
|
|
31
|
+
* is fire-and-forget; awaiting non-completing Observables would block ack).
|
|
32
|
+
*
|
|
33
|
+
* Ref: ZorionWallet/bank-client-ui#66
|
|
34
|
+
*/
|
|
35
|
+
const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
|
36
|
+
const ctx_host_1 = require("@nestjs/microservices/ctx-host");
|
|
37
|
+
const server_rmq_1 = require("@nestjs/microservices/server/server-rmq");
|
|
38
|
+
class GgServerRmq extends server_rmq_1.ServerRMQ {
|
|
39
|
+
constructor(options) {
|
|
40
|
+
super(options);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* CUSTOMIZED: Forces `noAck: false` regardless of options — we always ack/nack manually.
|
|
44
|
+
* Parent's setupChannel does the same assertQueue + prefetch, but passes noAck from options.
|
|
45
|
+
*/
|
|
46
|
+
async setupChannel(channel, callback) {
|
|
47
|
+
if (!this.noAssert) {
|
|
48
|
+
await channel.assertQueue(this.queue, this.queueOptions);
|
|
49
|
+
}
|
|
50
|
+
await channel.prefetch(this.prefetchCount, this.isGlobalPrefetchCount);
|
|
51
|
+
channel.consume(this.queue, (msg) => this.handleMessage(msg, channel), { noAck: false, consumerTag: this.getOptionsProp(this.options, 'consumerTag', undefined) });
|
|
52
|
+
callback();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* CUSTOMIZED: Replaces parent's handleMessage to route through our ack/nack logic.
|
|
56
|
+
*
|
|
57
|
+
* Parent's handleMessage dispatches to handleEvent (no packet.id) or processes RPC
|
|
58
|
+
* (with packet.id), but never acks/nacks. We keep the same dispatch logic but add
|
|
59
|
+
* explicit ack/nack at each terminal point.
|
|
60
|
+
*/
|
|
61
|
+
async handleMessage(message, channel) {
|
|
62
|
+
if ((0, shared_utils_1.isNil)(message)) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const { content, properties } = message;
|
|
66
|
+
const rawMessage = this.parseContent(content);
|
|
67
|
+
const packet = await this.deserializer.deserialize(rawMessage, properties);
|
|
68
|
+
const pattern = (0, shared_utils_1.isString)(packet.pattern) ? packet.pattern : JSON.stringify(packet.pattern);
|
|
69
|
+
const rmqContext = new ctx_host_1.RmqContext([message, channel, pattern]);
|
|
70
|
+
if (!('id' in packet)) {
|
|
71
|
+
return this.handleEvent(pattern, packet, rmqContext);
|
|
72
|
+
}
|
|
73
|
+
return this.handleRpcMessage(message, channel, packet, properties, rmqContext);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* CUSTOMIZED: Event handler with native DLQ via nack.
|
|
77
|
+
*
|
|
78
|
+
* - Success → ack
|
|
79
|
+
* - Error → nack(requeue: true) → RMQ retries up to delivery-limit → DLX → DLQ
|
|
80
|
+
* - No handler → nack(requeue: false) → immediate dead-letter (reason: rejected)
|
|
81
|
+
*/
|
|
82
|
+
async handleEvent(pattern, packet, context) {
|
|
83
|
+
const channel = context.getChannelRef();
|
|
84
|
+
const message = context.getMessage();
|
|
85
|
+
const handler = this.getHandlerByPattern(pattern);
|
|
86
|
+
if (!handler) {
|
|
87
|
+
this.logger.warn(`No event handler for pattern "${pattern}". Rejecting to DLQ.`);
|
|
88
|
+
this.safeNack(channel, message, false); // requeue: false → immediate dead-letter
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
await handler(packet.data, context);
|
|
93
|
+
this.safeAck(channel, message);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
const deliveryCount = message.properties?.headers?.['x-delivery-count'] ?? 0;
|
|
97
|
+
this.logger.error(`Event handler error [${pattern}] (delivery #${deliveryCount}): ${error?.message}`, error?.stack);
|
|
98
|
+
this.safeNack(channel, message, true); // requeue: true → RMQ handles retry/DLQ
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* CUSTOMIZED: RPC handler with explicit ack + error response.
|
|
103
|
+
*
|
|
104
|
+
* RPC is NOT retried — caller has a timeout and expects a response.
|
|
105
|
+
* No DLQ publish for RPC errors — they are reported to the caller.
|
|
106
|
+
*/
|
|
107
|
+
async handleRpcMessage(message, channel, packet, properties, rmqContext) {
|
|
108
|
+
const handler = this.getHandlerByPattern(rmqContext.getPattern());
|
|
109
|
+
if (!handler) {
|
|
110
|
+
this.logger.warn(`No message handler for pattern "${rmqContext.getPattern()}".`);
|
|
111
|
+
const noHandlerPacket = {
|
|
112
|
+
id: packet.id,
|
|
113
|
+
err: 'There is no matching message handler defined in the remote service.',
|
|
114
|
+
status: 'error',
|
|
115
|
+
};
|
|
116
|
+
try {
|
|
117
|
+
this.sendMessage(noHandlerPacket, properties.replyTo, properties.correlationId);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
this.logger.error(`Failed to send RPC no-handler response [${rmqContext.getPattern()}]: ${err?.message}`);
|
|
121
|
+
}
|
|
122
|
+
this.safeAck(channel, message);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const response$ = this.transformToObservable(await handler(packet.data, rmqContext));
|
|
127
|
+
const publish = (data) => this.sendMessage(data, properties.replyTo, properties.correlationId);
|
|
128
|
+
if (response$) {
|
|
129
|
+
this.send(response$, publish);
|
|
130
|
+
}
|
|
131
|
+
this.safeAck(channel, message);
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
this.logger.error(`RPC handler error [${rmqContext.getPattern()}]: ${error?.message}`, error?.stack);
|
|
135
|
+
const errorPacket = {
|
|
136
|
+
id: packet.id,
|
|
137
|
+
status: 'error',
|
|
138
|
+
err: {
|
|
139
|
+
message: error?.message || 'Internal server error',
|
|
140
|
+
status: 500,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
try {
|
|
144
|
+
this.sendMessage(errorPacket, properties.replyTo, properties.correlationId);
|
|
145
|
+
}
|
|
146
|
+
catch (sendError) {
|
|
147
|
+
this.logger.error(`Failed to send RPC error response [${rmqContext.getPattern()}]: ${sendError?.message}`);
|
|
148
|
+
}
|
|
149
|
+
this.safeAck(channel, message);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// --- Helpers ---
|
|
153
|
+
/**
|
|
154
|
+
* Safe ack/nack wrappers. If the channel is closed mid-processing (e.g., consumer_timeout,
|
|
155
|
+
* network drop), amqplib throws synchronously. Without wrapping, this becomes an unhandled
|
|
156
|
+
* promise rejection. The message is safe: RMQ automatically requeues unacked messages
|
|
157
|
+
* when a channel closes. These wrappers just prevent noisy crashes.
|
|
158
|
+
*/
|
|
159
|
+
safeAck(channel, message) {
|
|
160
|
+
try {
|
|
161
|
+
channel.ack(message);
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
this.logger.error(`Failed to ack: ${err?.message}. Message will be requeued on channel close.`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
safeNack(channel, message, requeue) {
|
|
168
|
+
try {
|
|
169
|
+
channel.nack(message, false, requeue);
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
this.logger.error(`Failed to nack: ${err?.message}. Message will be requeued on channel close.`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/** Duplicated from parent (private in ServerRMQ, can't be inherited) */
|
|
176
|
+
parseContent(content) {
|
|
177
|
+
try {
|
|
178
|
+
return JSON.parse(content.toString());
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return content.toString();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.GgServerRmq = GgServerRmq;
|
|
186
|
+
//# sourceMappingURL=gg-server-rmq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gg-server-rmq.js","sourceRoot":"","sources":["../../../../../libs/gg-core/src/gg-micro/gg-server-rmq.ts"],"names":[],"mappings":"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"}
|
package/src/gg-micro/index.d.ts
CHANGED
package/src/gg-micro/index.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./gg-rmq-service.injector"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./gg-rmq.configurator"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./gg-server-rmq"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./micro.client"), exports);
|
|
7
8
|
tslib_1.__exportStar(require("./rmq.config"), exports);
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/gg-core/src/gg-micro/index.ts"],"names":[],"mappings":";;;AAAA,oEAA0C;AAC1C,gEAAsC;AACtC,yDAA+B;AAC/B,uDAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/gg-core/src/gg-micro/index.ts"],"names":[],"mappings":";;;AAAA,oEAA0C;AAC1C,gEAAsC;AACtC,0DAAgC;AAChC,yDAA+B;AAC/B,uDAA6B"}
|