我在nodejs中使用express用于经常与mongodb通信的Web应用程序。目前,我使用自己的作业队列系统运行生产,只有在上一个作业完成后才开始处理作业(kue似乎采用的方法)。
对我来说,这看起来非常低效,我希望有一个更加异步的作业队列,所以我正在寻找一些关于其他nodejs开发人员如何排队他们的工作并构建他们的处理的建议。
我的一个想法是处理立即收到的任何作业,并按添加顺序返回结果数据。
还要考虑:目前每个用户都有自己独立的作业队列实例,这是正常的做法吗?有什么理由不应该这样吗? (即,所有用户都将作业发送到一个通用队列?)
任何意见/建议表示赞赏。
答案 0 :(得分:0)
为什么要构建自己的队列系统?您使用addLocalJob
序列化异步队列做了大量工作。
你为什么不做一些像
这样的事情 on('request', function(req, res) { queryDB(parameter, function(result) { res.send(result) })
?完全并行访问,无油门,无(异步)等待。
如果您真的想在自己的代码中“手动”执行此操作,为什么不执行trafficQueue
的前n个元素而不是仅执行第一个?
如果你想节制数据库 - 两种方式:
async
这样的库和函数parallelLimit
http.globalAgent.maxSockets
。希望这有帮助。