Nodejs:异步作业队列处理

时间:2014-01-27 17:22:35

标签: node.js mongodb redis queue jobs

我在nodejs中使用express用于经常与mongodb通信的Web应用程序。目前,我使用自己的作业队列系统运行生产,只有在上一个作业完成后才开始处理作业(kue似乎采用的方法)。

对我来说,这看起来非常低效,我希望有一个更加异步的作业队列,所以我正在寻找一些关于其他nodejs开发人员如何排队他们的工作并构建他们的处理的建议。

我的一个想法是处理立即收到的任何作业,并按添加顺序返回结果数据。

还要考虑:目前每个用户都有自己独立的作业队列实例,这是正常的做法吗?有什么理由不应该这样吗? (即,所有用户都将作业发送到一个通用队列?)

任何意见/建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

为什么要构建自己的队列系统?您使用addLocalJob序列化异步队列做了大量工作。

你为什么不做一些像

这样的事情

on('request', function(req, res) { queryDB(parameter, function(result) { res.send(result) })

?完全并行访问,无油门,无(异步)等待。 如果您真的想在自己的代码中“手动”执行此操作,为什么不执行trafficQueue的前n个元素而不是仅执行第一个?

如果你想节制数据库 - 两种方式:

  • 使用像async这样的库和函数parallelLimit
  • 使用http(s)连接到您的mongodb并使用node-build-in http.globalAgent.maxSockets

希望这有帮助。