问题描述
我有 Expressjs 应用程序和一个执行 DELETE 操作的小型 REST 端点
app.route("/api/product/:id")
.delete(product.deleteProduct)
app.listen(port,() => console.log(`App is running!`));
函数本身比较简单
const { queue } = require('./processor');
function updateProduct(req,res) {
queue.push({ 'type': 'PUT','endpoint': endpoint,'payload': req.body });
res.status(200).json({ code: 'Enqueued' });
}
我将任务排入 fastq
队列实现(processor.js
文件)。基本上,该任务向第三方执行 REST 请求。
const q = require('fastq')
const superagent = require('superagent');
const uuid = require('uuid');
const queue = q(worker,1);
function worker(task,callback) {
console.log('Processing task:',task.type);
switch (task.type) {
case 'DELETE': {
console.log('Task endpoint: ',task.endpoint);
superagent
.delete(task.endpoint)
.then(res => {
console.log('Task successfully done');
})
.catch(err => {
console.log('Failed to process task');
});
break;
}
}
console.log('Tasks in queue: ',queue.length());
}
module.exports = { queue };
问题是,当我执行应用程序时,在日志中我只收到一次有关任务处理的消息 - 当我执行第一个请求时。当我尝试发送其他请求时 - 控制台中没有显示任何内容,第三方中也没有任何变化。
有什么问题?
我的目标是将所有传入的任务排入队列,如果它们失败,则应再次将它们添加到队列中。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)