@tigthor/kokocrypt
Version:
Enhanced Fortress Edition - Secure, quantum-resistant, high-performance encryption package
101 lines • 4.24 kB
JavaScript
;
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