@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
1
  {
2
2
  "name": "@zorionapp/gg-core",
3
- "version": "5.0.23",
3
+ "version": "5.0.24",
4
4
  "type": "commonjs",
5
5
  "dependencies": {
6
6
  "cache-manager": "5.2.4",
@@ -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 $ = this.clientProxy
31
- .send(pattern, this.toRmqRecord(command, options.priority, options.customHeaders))
32
- .pipe((0, rxjs_1.tap)(() => this.logger.debug({ msg: 'RMQ command sent', pattern })), (0, rxjs_1.timeout)(options.timeout.as('milliseconds')), (0, rxjs_1.catchError)((e) => {
33
- this.logger.error({ msg: 'RMQ command error', pattern, payload: command, error: e });
34
- return (0, rxjs_1.throwError)(() => e);
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":"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"}
1
+ {"version":3,"file":"micro.client.js","sourceRoot":"","sources":["../../../../../libs/gg-core/src/gg-micro/micro.client.ts"],"names":[],"mappings":"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"}