UNPKG

@awesomeniko/kafka-trail

Version:

A Node.js library for managing message queue with Kafka

38 lines 1.28 kB
import { v4 } from "uuid"; import { ktEncode, ktDecode } from "../libs/helpers/default-data-parser.js"; import { CreateDlqTopicName } from "../libs/helpers/topic-name.js"; export const KTTopic = (settings, validatorFn) => { const fn = (payload, { messageKey, meta }) => { let payloadToSend; if (validatorFn) { payloadToSend = validatorFn.encode(payload); } else { payloadToSend = ktEncode(payload); } return { topicName: settings.topic, message: payloadToSend, messageKey: messageKey, meta: { ...meta, traceId: meta?.traceId ?? v4(), }, }; }; fn.topicSettings = settings; fn.decode = validatorFn?.decode ?? ktDecode; return fn; }; export const DLQKTTopic = (settings, validatorFn) => { return KTTopic({ ...settings, createDLQ: true, topic: CreateDlqTopicName(settings.topic) }, validatorFn); }; export const CreateKTTopic = (settings, validatorFn) => { const BaseTopic = KTTopic(settings, validatorFn); let DLQTopic = null; if (settings.createDLQ) { DLQTopic = DLQKTTopic(settings); } return { BaseTopic, DLQTopic }; }; //# sourceMappingURL=topic.js.map