hiot-kafka
Version:
hiot-app middleware to bootstrap kafka
40 lines (33 loc) • 991 B
JavaScript
exports.parse = (consumer, payload, topic, partition, logger) => {
var message = payload.message;
var value;
var reject = commit(consumer, topic, partition, payload.offset, "rejected");
var ack = commit(consumer, topic, partition, payload.offset, "acknowledge");
if (!message || !message.value) {
logger.warn("rejecting message due to empty body");
return reject();
}
try {
var json = message.value.toString("utf8");
value = JSON.parse(json);
} catch (err) {
logger.error({ json }, "rejecting message due to invalid json");
return reject();
}
return Promise.resolve({
topic: topic,
partition: partition,
offset: payload.offset,
message: {
key: message.key,
value: value,
},
ack: ack,
reject: reject,
});
};
function commit(consumer, topic, partition, offset, reason) {
var meta = { topic, partition, offset, metadata: reason };
return consumer.commitOffset.bind(consumer, meta);
}
;