微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有任务添加到队列中

如何解决没有任务添加到队列中

我有 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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?