没有任务添加到队列中

问题描述

我有 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...