fiscalia_bo-nest-helpers 1.6.6 → 1.6.8

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.
@@ -0,0 +1,2 @@
1
+ import { KafkaConfig } from '../interfaces/kafka-config.interface';
2
+ export declare const kafkaConfig: KafkaConfig;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kafkaConfig = void 0;
4
+ exports.kafkaConfig = {
5
+ clientId: 'your-client-id',
6
+ brokers: ['localhost:9092'],
7
+ groupId: 'your-group-id',
8
+ ssl: false,
9
+ sasl: {
10
+ mechanism: 'plain',
11
+ username: 'your-username',
12
+ password: 'your-password',
13
+ },
14
+ retry: {
15
+ retries: 5,
16
+ initialRetryTime: 1000,
17
+ maxRetryTime: 30000,
18
+ },
19
+ batch: {
20
+ size: 100,
21
+ waitTimeMs: 5000,
22
+ },
23
+ deadLetter: {
24
+ topic: 'your-dlq-topic',
25
+ maxAttempts: 3,
26
+ },
27
+ };
28
+ //# sourceMappingURL=kafka.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka.config.js","sourceRoot":"","sources":["../../../../src/modules/ms-kafka/config/kafka.config.ts"],"names":[],"mappings":";;;AAEa,QAAA,WAAW,GAAgB;IACtC,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,CAAC,gBAAgB,CAAC;IAC3B,OAAO,EAAE,eAAe;IACxB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE;QACJ,SAAS,EAAE,OAAO;QAClB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;KAC1B;IACD,KAAK,EAAE;QACL,OAAO,EAAE,CAAC;QACV,gBAAgB,EAAE,IAAI;QACtB,YAAY,EAAE,KAAK;KACpB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,GAAG;QACT,UAAU,EAAE,IAAI;KACjB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,CAAC;KACf;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const KAFKA_HEADERS: {
2
+ readonly MESSAGE_ID: "messageId";
3
+ readonly ATTEMPT: "attempt";
4
+ readonly TIMESTAMP: "timestamp";
5
+ readonly PRIORITY: "priority";
6
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KAFKA_HEADERS = void 0;
4
+ exports.KAFKA_HEADERS = {
5
+ MESSAGE_ID: 'messageId',
6
+ ATTEMPT: 'attempt',
7
+ TIMESTAMP: 'timestamp',
8
+ PRIORITY: 'priority',
9
+ };
10
+ //# sourceMappingURL=kafka.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka.constants.js","sourceRoot":"","sources":["../../../../src/modules/ms-kafka/constants/kafka.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IAC3B,UAAU,EAAE,WAAW;IACvB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACZ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare enum PriorityMessage {
2
+ LOW = "LOW",
3
+ MEDIUM = "MEDIUM",
4
+ HIGH = "HIGH"
5
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PriorityMessage = void 0;
4
+ var PriorityMessage;
5
+ (function (PriorityMessage) {
6
+ PriorityMessage["LOW"] = "LOW";
7
+ PriorityMessage["MEDIUM"] = "MEDIUM";
8
+ PriorityMessage["HIGH"] = "HIGH";
9
+ })(PriorityMessage || (exports.PriorityMessage = PriorityMessage = {}));
10
+ //# sourceMappingURL=priority-message.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-message.enum.js","sourceRoot":"","sources":["../../../../src/modules/ms-kafka/enum/priority-message.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,8BAAW,CAAA;IACX,oCAAiB,CAAA;IACjB,gCAAa,CAAA;AACf,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B"}
@@ -0,0 +1,9 @@
1
+ import { PriorityMessage } from '../enum/priority-message.enum';
2
+ export interface BaseKafkaMessage {
3
+ messageId: string;
4
+ timestamp: number;
5
+ attempt?: number;
6
+ error?: string;
7
+ priority?: PriorityMessage;
8
+ metadata?: Record<string, any>;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base-message.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-message.interface.js","sourceRoot":"","sources":["../../../../src/modules/ms-kafka/interfaces/base-message.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { Mechanism, SASLOptions } from 'kafkajs';
2
+ export interface KafkaConfig {
3
+ clientId: string;
4
+ brokers: string[];
5
+ groupId: string;
6
+ ssl?: boolean;
7
+ sasl?: SASLOptions | Mechanism;
8
+ retry?: {
9
+ retries: number;
10
+ initialRetryTime: number;
11
+ maxRetryTime: number;
12
+ };
13
+ batch?: {
14
+ size: number;
15
+ waitTimeMs: number;
16
+ };
17
+ deadLetter?: {
18
+ topic: string;
19
+ maxAttempts: number;
20
+ };
21
+ global?: boolean;
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=kafka-config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka-config.interface.js","sourceRoot":"","sources":["../../../../src/modules/ms-kafka/interfaces/kafka-config.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { KafkaConfig } from './interfaces/kafka-config.interface';
3
+ export declare class MsKafkaModule {
4
+ static register(config: KafkaConfig): DynamicModule;
5
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var MsKafkaModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MsKafkaModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const kafka_service_1 = require("./kafka.service");
13
+ const chalk_1 = require("chalk");
14
+ let MsKafkaModule = MsKafkaModule_1 = class MsKafkaModule {
15
+ static register(config) {
16
+ if (config.brokers.length === 0 || !config.brokers) {
17
+ console.warn(chalk_1.bold.red('ENV_SERVICE_MS_KAFKA_BROKERS no definido en variables de entorno'));
18
+ return { module: MsKafkaModule_1 };
19
+ }
20
+ return {
21
+ global: config.global,
22
+ module: MsKafkaModule_1,
23
+ imports: [],
24
+ providers: [
25
+ {
26
+ provide: 'KAFKA_CONFIG',
27
+ useValue: config,
28
+ },
29
+ kafka_service_1.KafkaService,
30
+ ],
31
+ exports: ['KAFKA_CONFIG', kafka_service_1.KafkaService],
32
+ };
33
+ }
34
+ };
35
+ exports.MsKafkaModule = MsKafkaModule;
36
+ exports.MsKafkaModule = MsKafkaModule = MsKafkaModule_1 = __decorate([
37
+ (0, common_1.Module)({})
38
+ ], MsKafkaModule);
39
+ //# sourceMappingURL=kafka.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka.module.js","sourceRoot":"","sources":["../../../src/modules/ms-kafka/kafka.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AAEvD,mDAA+C;AAC/C,iCAA6B;AAGtB,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAmB;QACjC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,YAAI,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,MAAM,EAAE,eAAa,EAAE,CAAC;QACnC,CAAC;QACD,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,eAAa;YACrB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,MAAM;iBACjB;gBACD,4BAAY;aACb;YACD,OAAO,EAAE,CAAC,cAAc,EAAE,4BAAY,CAAC;SACxC,CAAC;IACJ,CAAC;CACF,CAAA;AApBY,sCAAa;wBAAb,aAAa;IADzB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,aAAa,CAoBzB"}
@@ -0,0 +1,48 @@
1
+ import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
2
+ import { BaseKafkaMessage } from './interfaces/base-message.interface';
3
+ import { KafkaConfig } from './interfaces/kafka-config.interface';
4
+ export declare class KafkaService implements OnModuleInit, OnModuleDestroy {
5
+ private readonly config;
6
+ private kafka;
7
+ private producer;
8
+ private readonly consumers;
9
+ private readonly logger;
10
+ private isConnected;
11
+ private isConsumerRunning;
12
+ private reconnectionInProgress;
13
+ private readonly maxReconnectAttempts;
14
+ private healthCheckInterval;
15
+ private readonly messageBuffer;
16
+ private readonly processingTimers;
17
+ private readonly topics;
18
+ private readonly topicSubscriptions;
19
+ constructor(config: KafkaConfig);
20
+ onModuleInit(): Promise<void>;
21
+ onModuleDestroy(): Promise<void>;
22
+ produce<T extends BaseKafkaMessage>(topic: string, message: T, headers?: Record<string, any>): Promise<void>;
23
+ subscribe<T extends BaseKafkaMessage>(topic: string, callback: (message: T, headers?: Record<string, any>) => Promise<void>): Promise<void>;
24
+ private initializeKafka;
25
+ private createConsumer;
26
+ private connect;
27
+ private disconnect;
28
+ private connectWithRetry;
29
+ private reconnect;
30
+ private handleReconnection;
31
+ private handleConsumerReconnection;
32
+ private createKafkaMessage;
33
+ private handleMessageError;
34
+ private moveToDeadLetter;
35
+ private scheduleRetry;
36
+ private handleBatchProduction;
37
+ private flushMessageBuffer;
38
+ private scheduleBufferFlush;
39
+ private setupHealthCheck;
40
+ getTopicOffsets(topic: string): Promise<(import("kafkajs").PartitionOffset & {
41
+ high: string;
42
+ low: string;
43
+ })[]>;
44
+ getConsumerLag(topic: string): Promise<{
45
+ partition: number;
46
+ lag: number;
47
+ }[]>;
48
+ }
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var KafkaService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.KafkaService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const kafkajs_1 = require("kafkajs");
19
+ const uuid_1 = require("uuid");
20
+ const kafka_constants_1 = require("./constants/kafka.constants");
21
+ const priority_message_enum_1 = require("./enum/priority-message.enum");
22
+ let KafkaService = KafkaService_1 = class KafkaService {
23
+ constructor(config) {
24
+ this.config = config;
25
+ this.consumers = new Map();
26
+ this.logger = new common_1.Logger(KafkaService_1.name);
27
+ this.isConnected = false;
28
+ this.isConsumerRunning = false;
29
+ this.reconnectionInProgress = false;
30
+ this.maxReconnectAttempts = 5;
31
+ this.messageBuffer = new Map();
32
+ this.processingTimers = new Map();
33
+ this.topics = new Set();
34
+ this.topicSubscriptions = new Map();
35
+ this.initializeKafka();
36
+ }
37
+ async onModuleInit() {
38
+ await this.connectWithRetry();
39
+ }
40
+ async onModuleDestroy() {
41
+ if (this.healthCheckInterval) {
42
+ clearInterval(this.healthCheckInterval);
43
+ }
44
+ for (const [topic, consumer] of this.consumers) {
45
+ try {
46
+ await consumer.disconnect();
47
+ this.logger.debug(`Consumidor desconectado para el topic ${topic}`);
48
+ }
49
+ catch (error) {
50
+ this.logger.error(`Error desconectado consumidor para el topic ${topic}:`, error);
51
+ }
52
+ }
53
+ await this.producer.disconnect();
54
+ this.isConnected = false;
55
+ this.logger.log('Desconectado exitosamente de Kafka');
56
+ }
57
+ async produce(topic, message, headers) {
58
+ const kafkaMessage = this.createKafkaMessage(message, headers);
59
+ try {
60
+ if (this.config.batch) {
61
+ await this.handleBatchProduction(topic, kafkaMessage);
62
+ }
63
+ else {
64
+ const record = {
65
+ topic,
66
+ messages: [kafkaMessage],
67
+ };
68
+ await this.producer.send(record);
69
+ }
70
+ this.logger.debug(`Mensaje enviado al topic ${topic}`);
71
+ }
72
+ catch (error) {
73
+ this.logger.error(`No se pudo enviar el mensaje al topic ${topic}`, error);
74
+ throw error;
75
+ }
76
+ }
77
+ async subscribe(topic, callback) {
78
+ try {
79
+ this.logger.debug(`Suscribiendose al topic ${topic}`);
80
+ const consumer = await this.createConsumer(topic);
81
+ await consumer.subscribe({ topic, fromBeginning: false });
82
+ await consumer.run({
83
+ eachMessage: async ({ topic, partition, message }) => {
84
+ try {
85
+ const parsedValue = message.value ? JSON.parse(message.value.toString()) : null;
86
+ await callback(parsedValue, message.headers);
87
+ await consumer.commitOffsets([
88
+ {
89
+ topic,
90
+ partition,
91
+ offset: (BigInt(message.offset) + BigInt(1)).toString(),
92
+ },
93
+ ]);
94
+ }
95
+ catch (error) {
96
+ this.logger.error(`Error procesando el mensaje del topic ${topic}: ${error.message}`);
97
+ if (error.message.includes('coordinator is not aware')) {
98
+ await this.handleConsumerReconnection(topic, consumer, callback);
99
+ return;
100
+ }
101
+ const parsedValue = message.value ? JSON.parse(message.value.toString()) : null;
102
+ if (parsedValue) {
103
+ await this.handleMessageError(topic, parsedValue, error);
104
+ }
105
+ }
106
+ },
107
+ });
108
+ this.consumers.set(topic, consumer);
109
+ this.logger.log(`Consumidor inicializado para el topic ${topic}`);
110
+ }
111
+ catch (error) {
112
+ this.logger.error(`Falló la suscripción al topic ${topic}: ${error.message}`);
113
+ throw error;
114
+ }
115
+ }
116
+ initializeKafka() {
117
+ var _a, _b, _c;
118
+ this.kafka = new kafkajs_1.Kafka({
119
+ clientId: this.config.clientId,
120
+ brokers: this.config.brokers,
121
+ ssl: this.config.ssl,
122
+ sasl: this.config.sasl,
123
+ retry: {
124
+ initialRetryTime: ((_a = this.config.retry) === null || _a === void 0 ? void 0 : _a.initialRetryTime) || 300,
125
+ maxRetryTime: ((_b = this.config.retry) === null || _b === void 0 ? void 0 : _b.maxRetryTime) || 30000,
126
+ retries: ((_c = this.config.retry) === null || _c === void 0 ? void 0 : _c.retries) || 10,
127
+ },
128
+ connectionTimeout: 30000,
129
+ authenticationTimeout: 30000,
130
+ });
131
+ this.producer = this.kafka.producer({
132
+ allowAutoTopicCreation: true,
133
+ createPartitioner: kafkajs_1.Partitioners.LegacyPartitioner,
134
+ retry: {
135
+ initialRetryTime: 100,
136
+ maxRetryTime: 30000,
137
+ retries: 8,
138
+ },
139
+ transactionalId: `${this.config.clientId}-${(0, uuid_1.v4)()}`,
140
+ });
141
+ require('events').EventEmitter.defaultMaxListeners = 20;
142
+ }
143
+ async createConsumer(topic) {
144
+ const consumer = this.kafka.consumer({
145
+ groupId: `${this.config.groupId}-${topic}`,
146
+ maxWaitTimeInMs: 50,
147
+ sessionTimeout: 600000,
148
+ heartbeatInterval: 15000,
149
+ rebalanceTimeout: 120000,
150
+ retry: {
151
+ initialRetryTime: 300,
152
+ maxRetryTime: 30000,
153
+ retries: 10,
154
+ },
155
+ maxBytes: 10485760,
156
+ });
157
+ await consumer.connect();
158
+ return consumer;
159
+ }
160
+ async connect() {
161
+ try {
162
+ await this.producer.connect();
163
+ const admin = this.kafka.admin();
164
+ await admin.connect();
165
+ await admin.listTopics();
166
+ await admin.disconnect();
167
+ }
168
+ catch (error) {
169
+ this.isConnected = false;
170
+ throw error;
171
+ }
172
+ }
173
+ async disconnect() {
174
+ try {
175
+ for (const [topic, consumer] of this.consumers) {
176
+ try {
177
+ await consumer.disconnect();
178
+ this.logger.debug(`Consumidor desconectado para el topic ${topic}`);
179
+ }
180
+ catch (error) {
181
+ this.logger.error(`Error desconectando el consumidor para el topic ${topic}:`, error);
182
+ }
183
+ }
184
+ await this.producer.disconnect();
185
+ this.isConnected = false;
186
+ this.isConsumerRunning = false;
187
+ this.logger.log('Desconectado exitosamente de Kafka');
188
+ }
189
+ catch (error) {
190
+ this.logger.error('Falló la desconexión de Kafka:', error);
191
+ throw error;
192
+ }
193
+ }
194
+ async connectWithRetry(attempt = 1) {
195
+ try {
196
+ if (!this.isConnected) {
197
+ await this.connect();
198
+ this.isConnected = true;
199
+ this.logger.log('Conectado exitosamente a Kafka');
200
+ this.setupHealthCheck();
201
+ }
202
+ }
203
+ catch (error) {
204
+ this.logger.error(`Falló la conexión a Kafka (intento ${attempt}/${this.maxReconnectAttempts}):`, error.message);
205
+ if (attempt < this.maxReconnectAttempts) {
206
+ const delay = Math.min(1000 * Math.pow(2, attempt), 10000);
207
+ this.logger.log(`Reintentando la conexión en ${delay}ms...`);
208
+ await new Promise((resolve) => setTimeout(resolve, delay));
209
+ await this.connectWithRetry(attempt + 1);
210
+ }
211
+ else {
212
+ this.logger.error('Se alcanzó el número máximo de intentos de reconexión. No se pudo conectar con Kafka.');
213
+ throw error;
214
+ }
215
+ }
216
+ }
217
+ async reconnect() {
218
+ try {
219
+ await this.disconnect();
220
+ await this.connect();
221
+ this.isConnected = true;
222
+ }
223
+ catch (error) {
224
+ this.logger.error(`Reconexión fallida: ${error.message}`);
225
+ this.isConnected = false;
226
+ }
227
+ }
228
+ async handleReconnection() {
229
+ if (this.reconnectionInProgress) {
230
+ return;
231
+ }
232
+ this.reconnectionInProgress = true;
233
+ try {
234
+ await this.disconnect();
235
+ await new Promise((resolve) => setTimeout(resolve, 5000));
236
+ await this.connect();
237
+ for (const [topic] of this.topicSubscriptions.entries()) {
238
+ const consumer = await this.createConsumer(topic);
239
+ await consumer.subscribe({ topic, fromBeginning: false });
240
+ this.consumers.set(topic, consumer);
241
+ }
242
+ this.isConnected = true;
243
+ this.logger.log('Reconectado exitosamente a Kafka');
244
+ }
245
+ catch (error) {
246
+ this.logger.error('Reconexión fallida:', error);
247
+ this.isConnected = false;
248
+ }
249
+ finally {
250
+ this.reconnectionInProgress = false;
251
+ }
252
+ }
253
+ async handleConsumerReconnection(topic, consumer, callback) {
254
+ try {
255
+ await consumer.disconnect();
256
+ await consumer.connect();
257
+ await consumer.subscribe({ topic, fromBeginning: false });
258
+ await consumer.run({
259
+ eachMessage: async ({ message }) => {
260
+ const parsedValue = message.value ? JSON.parse(message.value.toString()) : null;
261
+ await callback(parsedValue, message.headers);
262
+ },
263
+ });
264
+ }
265
+ catch (error) {
266
+ this.logger.error(`Falló la reconexión del consumidor para el topic ${topic}:`, error);
267
+ }
268
+ }
269
+ createKafkaMessage(message, headers) {
270
+ return {
271
+ key: message.messageId || (0, uuid_1.v4)(),
272
+ value: JSON.stringify(message),
273
+ headers: Object.assign({ [kafka_constants_1.KAFKA_HEADERS.MESSAGE_ID]: message.messageId || (0, uuid_1.v4)(), [kafka_constants_1.KAFKA_HEADERS.TIMESTAMP]: Date.now().toString(), [kafka_constants_1.KAFKA_HEADERS.PRIORITY]: message.priority || priority_message_enum_1.PriorityMessage.MEDIUM, [kafka_constants_1.KAFKA_HEADERS.ATTEMPT]: (message.attempt || 0).toString() }, headers),
274
+ timestamp: Date.now().toString(),
275
+ };
276
+ }
277
+ async handleMessageError(topic, message, error) {
278
+ var _a;
279
+ message.attempt = (message.attempt || 0) + 1;
280
+ message.error = error.message;
281
+ if (error.message.includes('coordinator is not aware')) {
282
+ await this.reconnect();
283
+ return;
284
+ }
285
+ if (message.attempt >= (((_a = this.config.deadLetter) === null || _a === void 0 ? void 0 : _a.maxAttempts) || 3)) {
286
+ await this.moveToDeadLetter(topic, message);
287
+ }
288
+ else {
289
+ await this.scheduleRetry(topic, message);
290
+ }
291
+ }
292
+ async moveToDeadLetter(topic, message) {
293
+ const deadLetterTopic = `${topic}.dlq`;
294
+ await this.produce(deadLetterTopic, message);
295
+ this.logger.warn(`Mensaje movido a DLQ: ${message.messageId}`);
296
+ }
297
+ async scheduleRetry(topic, message) {
298
+ var _a;
299
+ const retryTopic = `${topic}.retry`;
300
+ const delay = Math.min(1000 * Math.pow(2, message.attempt || 0), ((_a = this.config.retry) === null || _a === void 0 ? void 0 : _a.maxRetryTime) || 30000);
301
+ setTimeout(async () => {
302
+ await this.produce(retryTopic, message);
303
+ }, delay);
304
+ }
305
+ async handleBatchProduction(topic, message) {
306
+ var _a;
307
+ const messages = this.messageBuffer.get(topic) || [];
308
+ messages.push(message);
309
+ this.messageBuffer.set(topic, messages);
310
+ if (messages.length >= (((_a = this.config.batch) === null || _a === void 0 ? void 0 : _a.size) || 100)) {
311
+ await this.flushMessageBuffer(topic);
312
+ }
313
+ else {
314
+ this.scheduleBufferFlush(topic);
315
+ }
316
+ }
317
+ async flushMessageBuffer(topic) {
318
+ const messages = this.messageBuffer.get(topic) || [];
319
+ if (messages.length > 0) {
320
+ const record = {
321
+ topic,
322
+ messages,
323
+ };
324
+ await this.producer.send(record);
325
+ this.messageBuffer.set(topic, []);
326
+ }
327
+ }
328
+ scheduleBufferFlush(topic) {
329
+ var _a;
330
+ if (!this.processingTimers.has(topic)) {
331
+ const timer = setTimeout(async () => {
332
+ await this.flushMessageBuffer(topic);
333
+ this.processingTimers.delete(topic);
334
+ }, ((_a = this.config.batch) === null || _a === void 0 ? void 0 : _a.waitTimeMs) || 5000);
335
+ this.processingTimers.set(topic, timer);
336
+ }
337
+ }
338
+ setupHealthCheck() {
339
+ if (this.healthCheckInterval) {
340
+ clearInterval(this.healthCheckInterval);
341
+ }
342
+ this.healthCheckInterval = setInterval(async () => {
343
+ if (this.reconnectionInProgress) {
344
+ return;
345
+ }
346
+ try {
347
+ const admin = this.kafka.admin();
348
+ await admin.connect();
349
+ await admin.listTopics();
350
+ await admin.disconnect();
351
+ this.logger.debug('Verificación del estado de Kafka exitosa');
352
+ this.isConnected = true;
353
+ }
354
+ catch (error) {
355
+ this.logger.error('La verificación de estado falló, intentando reconexión:');
356
+ await this.handleReconnection();
357
+ }
358
+ }, 30000);
359
+ }
360
+ async getTopicOffsets(topic) {
361
+ const admin = this.kafka.admin();
362
+ await admin.connect();
363
+ const offsets = await admin.fetchTopicOffsets(topic);
364
+ await admin.disconnect();
365
+ return offsets;
366
+ }
367
+ async getConsumerLag(topic) {
368
+ const admin = this.kafka.admin();
369
+ await admin.connect();
370
+ try {
371
+ const topicOffsets = await admin.fetchTopicOffsets(topic);
372
+ const consumerOffsets = await admin.fetchOffsets({
373
+ groupId: this.config.groupId,
374
+ topics: [topic],
375
+ });
376
+ const consumerOffsetsMap = new Map();
377
+ consumerOffsets.forEach(({ partitions }) => {
378
+ partitions.forEach((partition) => {
379
+ consumerOffsetsMap.set(partition.partition, partition.offset);
380
+ });
381
+ });
382
+ return topicOffsets.map((topicOffset) => ({
383
+ partition: topicOffset.partition,
384
+ lag: parseInt(topicOffset.offset) -
385
+ parseInt(consumerOffsetsMap.get(topicOffset.partition) || '0'),
386
+ }));
387
+ }
388
+ finally {
389
+ await admin.disconnect();
390
+ }
391
+ }
392
+ };
393
+ exports.KafkaService = KafkaService;
394
+ exports.KafkaService = KafkaService = KafkaService_1 = __decorate([
395
+ (0, common_1.Injectable)(),
396
+ __param(0, (0, common_1.Inject)('KAFKA_CONFIG')),
397
+ __metadata("design:paramtypes", [Object])
398
+ ], KafkaService);
399
+ //# sourceMappingURL=kafka.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka.service.js","sourceRoot":"","sources":["../../../src/modules/ms-kafka/kafka.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fiscalia_bo-nest-helpers",
3
- "version": "1.6.6",
3
+ "version": "1.6.8",
4
4
  "description": "Helpers y servicios para NestJS",
5
5
  "author": "DNTIC - Ministerio Público",
6
6
  "contact": {
@@ -37,7 +37,8 @@
37
37
  "dist/modules/ms-telegram/*",
38
38
  "dist/modules/ms-whatsapp/*",
39
39
  "dist/modules/ms-oep/*",
40
- "dist/modules/throttler-request/*"
40
+ "dist/modules/throttler-request/*",
41
+ "dist/modules/ms-kafka/*"
41
42
  ],
42
43
  "public": true,
43
44
  "main": "dist/index.js",