@awesomeniko/kafka-trail
Version:
A Node.js library for managing message queue with Kafka
38 lines • 1.28 kB
JavaScript
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