UNPKG

hiot-kafka

Version:

hiot-app middleware to bootstrap kafka

43 lines (34 loc) 1.12 kB
// Expects a callback argument which returns a promise. // Uses that promise to call either `ack` or `reject` on the envelope module.exports = (callback, options, logger, handleError) => { let baseLogDetails = { label: "hiot-kafka-handle-envelope" }; logger.info(baseLogDetails, "Setting up handler"); return (envelope) => { baseLogDetails.topic = envelope.topic; logger.info( baseLogDetails, `Received message for topic: ${envelope.topic}` ); return callback(envelope.message, options) .then((metadata) => { logger.info( { ...baseLogDetails, status: "ack", metadata }, `Received success for ${envelope.topic}` ); envelope.ack(); }) .catch((err) => { logger.fatal( { ...baseLogDetails, status: "reject", message: envelope.message, err: { message: err.message, stack: err.stack }, }, `Got error processing ${envelope.topic}` ); handleError(err, { extra: { envelope } }); envelope.reject(); }); }; };