Я пытаюсь отправить сообщение по запросу POST через очередь «input», и как только сообщение будет обработано и отправлено обратно через очередь «results», ответьте res.json ().
Это работает в первый раз, но при втором запросе POST, после получения результатов, выдается ошибка:
Error: Can't set headers after they are sent.
Код выглядит так:
const connection = cb => {
amqp.connect(amqp_uri, (err, conn) => {
if (err) {
throw new Error(err)
}
cb(conn)
})
}
router.post('/', (req, res) => {
const input = JSON.stringify(req.body);
const queueToSend = "input";
const queueToReceive = "results";
connection(conn => {
let results = null;
conn.createChannel((err, ch) => {
if (err) {
throw new Error(err)
}
ch.assertQueue('input', {durable: false});
ch.assertQueue('results', {durable: false})
ch.sendToQueue('input', new Buffer(input));
ch.consume('results', (msg) => {
ch.ack(msg)
results = JSON.parse(msg.content);
console.log('received results');
res.json(results);
}, {noAck: false})
})
})
});
Что мне не хватает?Спасибо за помощь!