UNPKG

@tigthor/kokocrypt

Version:

Enhanced Fortress Edition - Secure, quantum-resistant, high-performance encryption package

101 lines 4.24 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var ProducerService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProducerService = void 0; const common_1 = require("@nestjs/common"); const config_1 = require("@nestjs/config"); const kafkajs_1 = require("kafkajs"); let ProducerService = ProducerService_1 = class ProducerService { constructor(configService) { this.configService = configService; this.logger = new common_1.Logger(ProducerService_1.name); this.kafka = new kafkajs_1.Kafka({ clientId: this.configService.get('kafka.clientId') || 'api-gateway-client', brokers: [this.configService.get('kafka.broker') || 'localhost:9092'], retry: { initialRetryTime: 300, retries: 5, maxRetryTime: 30000, }, }); this.producer = this.kafka.producer({ allowAutoTopicCreation: true, transactionTimeout: 30000, createPartitioner: kafkajs_1.Partitioners.LegacyPartitioner, }); } async onModuleInit() { try { await this.producer.connect(); this.logger.log('Kafka producer connected successfully'); } catch (error) { this.logger.error('Failed to connect Kafka producer', error); } } async onModuleDestroy() { try { await this.producer.disconnect(); this.logger.log('Kafka producer disconnected successfully'); } catch (error) { this.logger.error('Failed to disconnect Kafka producer', error); } } async sendMessage(topic, message, key, headers) { try { const kafkaMessage = { value: typeof message === 'string' ? message : JSON.stringify(message), key: key, headers, }; const response = await this.producer.send({ topic, compression: kafkajs_1.CompressionTypes.GZIP, messages: [kafkaMessage], acks: 1, }); this.logger.debug(`Message sent to topic ${topic}: ${JSON.stringify(response)}`); return response; } catch (error) { this.logger.error(`Error sending message to topic ${topic}:`, error); throw error; } } async sendBatchMessages(topic, messages, keys) { try { const kafkaMessages = messages.map((message, index) => ({ value: typeof message === 'string' ? message : JSON.stringify(message), key: keys && keys[index] ? keys[index] : undefined, })); const response = await this.producer.send({ topic, compression: kafkajs_1.CompressionTypes.GZIP, messages: kafkaMessages, acks: 1, }); this.logger.debug(`Batch messages sent to topic ${topic}: ${JSON.stringify(response)}`); return response; } catch (error) { this.logger.error(`Error sending batch messages to topic ${topic}:`, error); throw error; } } }; exports.ProducerService = ProducerService; exports.ProducerService = ProducerService = ProducerService_1 = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [config_1.ConfigService]) ], ProducerService); //# sourceMappingURL=producer.service.js.map