@message-queue-toolkit/kafka
Version:
Kafka adapter for message-queue-toolkit
53 lines • 2.05 kB
JavaScript
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