Я работаю с очень маленьким фрагментом кода nodeJS, который использует экспресс.Приложение получает полезную нагрузку как POST
и отправляет ее другому методу, который отправляет ее на kafka
.Как только это произойдет, мне нужно вернуть ответ обратно, чтобы выразить, чтобы он мог закрыть соединение на основе состояния (например, вернуть ответ 200).
// producer.js
// Defined variables
var kafka = require('kafka-node'),
Producer = kafka.Producer;
module.exports = {
sendToProducer: function (payload) {
// Define our kafka settings
var client = new kafka.KafkaClient(),
producer = new Producer(client);
// On producer ready
producer.on('ready', function () {
// Send our payload to our topic
producer.send(payload, function (err, data) {
console.log(data);
// Return our response back to `app.js` so express can handle it.
});
});
// On producer error
producer.on('error', function (err) {
console.log('Producer Error', err)
})
}
};
// app.js
app.post('/payload', function (req, res) {
// Define our route
const payload = req.body;
const route = payload.route;
// Check to see if we have a route
if(!route){
logError('no route');
}
let mappedData = [{ topic: 'test', messages: 'hi... ', partition: 0 }]
// Based on the route
switch(route){
// Receive data
case 'ingest':
producer.sendToProducer(mappedData);
// How can I tell express the status of the above method so that we can close the request? (ex 200 response for example?)
break;
// Handle undefined routes
default:
break;
}
});
В моем app.js
выражении case,как мне ждать ответа / обратного вызова от producer.sendToProducer(mappedData);
, чтобы я мог соответствующим образом обработать экспресс-статус?