@lucaapp/service-utils 1.3.0 → 1.4.1

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.
@@ -1,6 +1,7 @@
1
1
  import type { Payment } from './events/payment';
2
2
  import type { Consumer } from './events/consumer';
3
3
  import type { Operator } from './events/operator';
4
+ import { Service } from '../serviceIdentity';
4
5
  declare enum KafkaTopic {
5
6
  PAYMENTS = "PAYMENTS",
6
7
  CONSUMERS = "CONSUMERS",
@@ -12,9 +13,9 @@ declare type MessageFormats = {
12
13
  [KafkaTopic.OPERATORS]: Operator;
13
14
  };
14
15
  declare const MessageIssuer: {
15
- PAYMENTS: string;
16
- CONSUMERS: string;
17
- OPERATORS: string;
16
+ PAYMENTS: Service;
17
+ CONSUMERS: Service;
18
+ OPERATORS: Service;
18
19
  };
19
20
  export { KafkaTopic, MessageIssuer };
20
21
  export type { MessageFormats };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MessageIssuer = exports.KafkaTopic = void 0;
4
+ const serviceIdentity_1 = require("../serviceIdentity");
4
5
  var KafkaTopic;
5
6
  (function (KafkaTopic) {
6
7
  KafkaTopic["PAYMENTS"] = "PAYMENTS";
@@ -9,8 +10,8 @@ var KafkaTopic;
9
10
  })(KafkaTopic || (KafkaTopic = {}));
10
11
  exports.KafkaTopic = KafkaTopic;
11
12
  const MessageIssuer = {
12
- [KafkaTopic.PAYMENTS]: 'backend-pay',
13
- [KafkaTopic.CONSUMERS]: 'backend',
14
- [KafkaTopic.OPERATORS]: 'backend',
13
+ [KafkaTopic.PAYMENTS]: serviceIdentity_1.Service.BACKEND_PAY,
14
+ [KafkaTopic.CONSUMERS]: serviceIdentity_1.Service.BACKEND,
15
+ [KafkaTopic.OPERATORS]: serviceIdentity_1.Service.BACKEND,
15
16
  };
16
17
  exports.MessageIssuer = MessageIssuer;
@@ -38,11 +38,21 @@ const messageProducedSizeCounter = new metrics_1.metricsClient.Histogram({
38
38
  labelNames: ['topic'],
39
39
  buckets: [64, 128, 256, 512, 1024, 2048, 4096, 8182],
40
40
  });
41
+ const messageProduceError = new metrics_1.metricsClient.Counter({
42
+ name: 'kafka_message_produce_error_count',
43
+ help: 'Total number of errors during message produce',
44
+ labelNames: ['topic'],
45
+ });
41
46
  const messageConsumedCounter = new metrics_1.metricsClient.Counter({
42
47
  name: 'kafka_message_consume_count',
43
48
  help: 'Total number of messages consumed',
44
49
  labelNames: ['topic', 'groupId'],
45
50
  });
51
+ const messageConsumedErrorCounter = new metrics_1.metricsClient.Counter({
52
+ name: 'kafka_message_consume_error_count',
53
+ help: 'Total number of errors during message consume',
54
+ labelNames: ['topic', 'groupId'],
55
+ });
46
56
  const messageAcknowledgedCounter = new metrics_1.metricsClient.Counter({
47
57
  name: 'kafka_message_consume_ack_count',
48
58
  help: 'Total number of messages acknowledged',
@@ -153,17 +163,24 @@ class KafkaClient {
153
163
  await consumer.run({
154
164
  autoCommit: true,
155
165
  eachMessage: async ({ message }) => {
156
- messageConsumedCounter
157
- .labels({ topic: kafkaTopic.valueOf(), groupId })
158
- .inc();
159
- const decryptedValue = await this.decryptValue(kafkaTopic, message.value);
160
- await this.verifySignature(kafkaTopic, decryptedValue, message.headers);
161
- const value = this.parseValue(decryptedValue);
162
- messageAcknowledgedCounter
163
- .labels({ topic: kafkaTopic.valueOf(), groupId })
164
- .inc();
165
- this.logger.debug({ key: message.key, value, timestamp: message.timestamp }, 'Record received');
166
- await handler({ ...message, value });
166
+ try {
167
+ messageConsumedCounter
168
+ .labels({ topic: kafkaTopic.valueOf(), groupId })
169
+ .inc();
170
+ const decryptedValue = await this.decryptValue(kafkaTopic, message.value);
171
+ await this.verifySignature(kafkaTopic, decryptedValue, message.headers);
172
+ const value = this.parseValue(decryptedValue);
173
+ this.logger.debug({ key: message.key, value, timestamp: message.timestamp }, 'Record received');
174
+ await handler({ ...message, value });
175
+ messageAcknowledgedCounter
176
+ .labels({ topic: kafkaTopic.valueOf(), groupId })
177
+ .inc();
178
+ }
179
+ catch (error) {
180
+ messageConsumedErrorCounter
181
+ .labels({ topic: kafkaTopic.valueOf(), groupId })
182
+ .inc();
183
+ }
167
184
  },
168
185
  });
169
186
  return consumer;
@@ -195,6 +212,7 @@ class KafkaClient {
195
212
  .observe(Buffer.byteLength(encryptedValue));
196
213
  }
197
214
  catch (error) {
215
+ messageProduceError.labels({ topic }).inc();
198
216
  throw (0, utils_1.logAndGetError)(this.logger, `Could not create producer for topic=${topic}`, error);
199
217
  }
200
218
  };
@@ -1,2 +1,3 @@
1
1
  export { ServiceIdentity } from './serviceIdentity';
2
2
  export { Environment } from './environment';
3
+ export { Service } from './service';
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Environment = exports.ServiceIdentity = void 0;
3
+ exports.Service = exports.Environment = exports.ServiceIdentity = void 0;
4
4
  var serviceIdentity_1 = require("./serviceIdentity");
5
5
  Object.defineProperty(exports, "ServiceIdentity", { enumerable: true, get: function () { return serviceIdentity_1.ServiceIdentity; } });
6
6
  var environment_1 = require("./environment");
7
7
  Object.defineProperty(exports, "Environment", { enumerable: true, get: function () { return environment_1.Environment; } });
8
+ var service_1 = require("./service");
9
+ Object.defineProperty(exports, "Service", { enumerable: true, get: function () { return service_1.Service; } });
@@ -0,0 +1,6 @@
1
+ declare enum Service {
2
+ BACKEND = "backend",
3
+ BACKEND_PAY = "backend-pay",
4
+ BACKEND_POS = "backend-pos"
5
+ }
6
+ export { Service };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Service = void 0;
4
+ var Service;
5
+ (function (Service) {
6
+ Service["BACKEND"] = "backend";
7
+ Service["BACKEND_PAY"] = "backend-pay";
8
+ Service["BACKEND_POS"] = "backend-pos";
9
+ })(Service || (Service = {}));
10
+ exports.Service = Service;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucaapp/service-utils",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [