@zorionapp/gg-core 5.0.23 → 5.0.24
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { ClientProxy, RmqRecord } from '@nestjs/microservices';
|
|
1
2
|
import { MetaDto } from '@zorionapp/gg-toolkit/dto';
|
|
2
3
|
import { RmqCommand, RmqEvent } from '@zorionapp/gg-toolkit/microservices';
|
|
3
|
-
import { ClientProxy, RmqRecord } from '@nestjs/microservices';
|
|
4
4
|
import { Duration } from 'luxon';
|
|
5
5
|
import { ClsService } from 'nestjs-cls';
|
|
6
6
|
import { Observable } from 'rxjs';
|
|
@@ -20,8 +20,10 @@ export declare class MicroClient {
|
|
|
20
20
|
private readonly name;
|
|
21
21
|
private readonly clsService;
|
|
22
22
|
private readonly user?;
|
|
23
|
+
private static readonly warnedRpcPatterns;
|
|
23
24
|
private readonly logger;
|
|
24
25
|
private readonly defaultOptions;
|
|
26
|
+
private readonly rpcSendCounter;
|
|
25
27
|
constructor(clientProxy: ClientProxy, name: string, clsService: ClsService, user?: AuthorizedUser);
|
|
26
28
|
/**
|
|
27
29
|
* Send command to RMQ
|
|
@@ -61,4 +63,6 @@ export declare class MicroClient {
|
|
|
61
63
|
* @private
|
|
62
64
|
*/
|
|
63
65
|
private getPattern;
|
|
66
|
+
private recordRpcSend;
|
|
67
|
+
private warnRpcSend;
|
|
64
68
|
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MicroClient = void 0;
|
|
4
|
-
const dto_1 = require("@zorionapp/gg-toolkit/dto");
|
|
5
4
|
const common_1 = require("@nestjs/common");
|
|
6
5
|
const microservices_1 = require("@nestjs/microservices");
|
|
6
|
+
const dto_1 = require("@zorionapp/gg-toolkit/dto");
|
|
7
7
|
const class_transformer_1 = require("class-transformer");
|
|
8
8
|
const lodash_1 = require("lodash");
|
|
9
9
|
const luxon_1 = require("luxon");
|
|
10
|
+
const prom_client_1 = require("prom-client");
|
|
10
11
|
const rxjs_1 = require("rxjs");
|
|
12
|
+
const RPC_SEND_METRIC = 'gg_rmq_rpc_send_total';
|
|
11
13
|
class MicroClient {
|
|
12
14
|
constructor(clientProxy, name, clsService, user) {
|
|
13
15
|
this.clientProxy = clientProxy;
|
|
@@ -17,6 +19,13 @@ class MicroClient {
|
|
|
17
19
|
this.logger = new common_1.Logger(MicroClient.name);
|
|
18
20
|
this.defaultOptions = { priority: 3, timeout: luxon_1.Duration.fromObject({ seconds: 30 }) };
|
|
19
21
|
this.logger = new common_1.Logger(`${MicroClient.name}:${this.name}`);
|
|
22
|
+
this.rpcSendCounter =
|
|
23
|
+
prom_client_1.register.getSingleMetric(RPC_SEND_METRIC) ??
|
|
24
|
+
new prom_client_1.Counter({
|
|
25
|
+
name: RPC_SEND_METRIC,
|
|
26
|
+
help: 'Total RMQ request-response calls issued through MicroClient.send',
|
|
27
|
+
labelNames: ['service', 'pattern', 'status'],
|
|
28
|
+
});
|
|
20
29
|
}
|
|
21
30
|
/**
|
|
22
31
|
* Send command to RMQ
|
|
@@ -27,12 +36,20 @@ class MicroClient {
|
|
|
27
36
|
send(command, options) {
|
|
28
37
|
options = this.mergeWithDefaultOptions(options);
|
|
29
38
|
const pattern = this.getPattern(command);
|
|
30
|
-
const $ =
|
|
31
|
-
.
|
|
32
|
-
|
|
33
|
-
this.
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
const $ = (0, rxjs_1.defer)(() => {
|
|
40
|
+
this.recordRpcSend(pattern, 'requested');
|
|
41
|
+
this.warnRpcSend(pattern, options);
|
|
42
|
+
return this.clientProxy
|
|
43
|
+
.send(pattern, this.toRmqRecord(command, options.priority, options.customHeaders))
|
|
44
|
+
.pipe((0, rxjs_1.tap)(() => {
|
|
45
|
+
this.recordRpcSend(pattern, 'success');
|
|
46
|
+
this.logger.debug({ msg: 'RMQ command response received', pattern });
|
|
47
|
+
}), (0, rxjs_1.timeout)(options.timeout.as('milliseconds')), (0, rxjs_1.catchError)((e) => {
|
|
48
|
+
this.recordRpcSend(pattern, 'error');
|
|
49
|
+
this.logger.error({ msg: 'RMQ command error', pattern, payload: command, error: e });
|
|
50
|
+
return (0, rxjs_1.throwError)(() => e);
|
|
51
|
+
}));
|
|
52
|
+
});
|
|
36
53
|
return command.mapClass
|
|
37
54
|
? $.pipe((0, rxjs_1.map)((value) => {
|
|
38
55
|
/** extract data and meta from response for pagination responses */
|
|
@@ -102,6 +119,22 @@ class MicroClient {
|
|
|
102
119
|
getPattern(command) {
|
|
103
120
|
return command.constructor.pattern;
|
|
104
121
|
}
|
|
122
|
+
recordRpcSend(pattern, status) {
|
|
123
|
+
this.rpcSendCounter.inc({ service: this.name, pattern, status });
|
|
124
|
+
}
|
|
125
|
+
warnRpcSend(pattern, options) {
|
|
126
|
+
const warningKey = `${this.name}:${pattern}`;
|
|
127
|
+
if (MicroClient.warnedRpcPatterns.has(warningKey)) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
MicroClient.warnedRpcPatterns.add(warningKey);
|
|
131
|
+
this.logger.warn({
|
|
132
|
+
msg: 'RMQ request-response send used; prefer emit or internal HTTP unless the caller requires the reply payload',
|
|
133
|
+
pattern,
|
|
134
|
+
timeoutMs: options.timeout.as('milliseconds'),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
105
137
|
}
|
|
106
138
|
exports.MicroClient = MicroClient;
|
|
139
|
+
MicroClient.warnedRpcPatterns = new Set();
|
|
107
140
|
//# sourceMappingURL=micro.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"micro.client.js","sourceRoot":"","sources":["../../../../../libs/gg-core/src/gg-micro/micro.client.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"micro.client.js","sourceRoot":"","sources":["../../../../../libs/gg-core/src/gg-micro/micro.client.ts"],"names":[],"mappings":"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"}
|