UNPKG

@message-queue-toolkit/kafka

Version:
53 lines 2.05 kB
import { types } from 'node:util'; import { resolveGlobalErrorLogObject, stringValueSerializer, } from '@lokalise/node-core'; import { resolveHandlerSpy, } from '@message-queue-toolkit/core'; export class AbstractKafkaService { errorReporter; logger; options; _handlerSpy; constructor(dependencies, options) { this.logger = dependencies.logger; this.errorReporter = dependencies.errorReporter; this.options = options; this._handlerSpy = resolveHandlerSpy(options); } get handlerSpy() { if (this._handlerSpy) return this._handlerSpy; throw new Error('HandlerSpy was not instantiated, please pass `handlerSpy` parameter during creation.'); } resolveMessageType(message) { if (!this.options.messageTypeField) return undefined; return message[this.options.messageTypeField]; } resolveMessageId(message) { if (!this.options.messageIdField) return undefined; return message[this.options.messageIdField]; } resolveHeaderRequestIdField() { return this.options.headerRequestIdField ?? 'x-request-id'; } handleMessageProcessed(params) { const { message, processingResult, topic } = params; const messageId = this.resolveMessageId(message); this._handlerSpy?.addProcessedMessage({ message, processingResult }, messageId); if (this.options.logMessages) { this.logger.debug({ message: stringValueSerializer(message), topic, processingResult, messageId, messageType: this.resolveMessageType(message), }, `Finished processing message ${messageId}`); } } handlerError(error, context = {}) { this.logger.error({ ...resolveGlobalErrorLogObject(error), ...context }); if (types.isNativeError(error)) this.errorReporter.report({ error, context }); } } //# sourceMappingURL=AbstractKafkaService.js.map