/** * Unmarshalls the message value and emit an enriched message event * * @param payload Kafka message * @param consumer Orchestrate Consumer */ export function onMessageReceived(payload: KakfaJS.EachMessagePayload, consumer: Consumer) { const { topic, partition, message } = payload const responseMessage = new ResponseMessage(consumer, { ...message, key: message.key.toString(), value: unmarshalEnvelope(message.value), topic, partition }) consumer.emit(EventType.Response, responseMessage) }
async function run() { await consumer.connect(); await consumer.subscribe({ topic }); await consumer.run({ eachMessage: async ({ topic, partition, message }) => { const prefix = `${topic}[${partition} | ${message.offset}] / ${message.timestamp}`; console.log(`- ${prefix} ${message.key}#${message.value}`); // send message for api const payload = JSON.parse(message.value); producer.send({ topic: 'certification-response', messages: [ { value: `User certificate ${payload.user.name} from course ${payload.course} is generated!`} ] }) } }) }