@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.
- package/dist/lib/kafka/events.d.ts +4 -3
- package/dist/lib/kafka/events.js +4 -3
- package/dist/lib/kafka/kafkaClient.js +29 -11
- package/dist/lib/serviceIdentity/index.d.ts +1 -0
- package/dist/lib/serviceIdentity/index.js +3 -1
- package/dist/lib/serviceIdentity/service.d.ts +6 -0
- package/dist/lib/serviceIdentity/service.js +10 -0
- package/package.json +1 -1
|
@@ -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:
|
|
16
|
-
CONSUMERS:
|
|
17
|
-
OPERATORS:
|
|
16
|
+
PAYMENTS: Service;
|
|
17
|
+
CONSUMERS: Service;
|
|
18
|
+
OPERATORS: Service;
|
|
18
19
|
};
|
|
19
20
|
export { KafkaTopic, MessageIssuer };
|
|
20
21
|
export type { MessageFormats };
|
package/dist/lib/kafka/events.js
CHANGED
|
@@ -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]:
|
|
13
|
-
[KafkaTopic.CONSUMERS]:
|
|
14
|
-
[KafkaTopic.OPERATORS]:
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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,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,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;
|