说我有快递服务发送电子邮件:
app.post('/send', function(req, res) {
sendEmailAsync(req.body).catch(console.error)
res.send('ok')
})
Run Code Online (Sandbox Code Playgroud)
这很有效.
我想知道在这里引入一个工作队列有什么好处?喜欢Kue.
jfr*_*d00 10
Node.js是否需要一个作业队列?
不是一般的.
作业队列是解决特定问题的,通常比单个node.js进程可以处理更多,因此您可以"排队"要做的事情,甚至可以将它们分发给其他进程来处理.
您甚至可能具有不同类型作业的优先级,或者想要控制作业执行的速率(假设您有一个速率限制上限,您必须在某个外部服务器上保持低于或者只是不想压倒其他服务器) .还可以使用nodejs群集来增加节点服务器可以处理的任务量.因此,当您有更多操作要比服务器可以一次轻松执行时,队列就是控制某些CPU或资源密集型任务的执行.队列使您可以控制执行流程.
我没有看到您显示的代码使用作业队列的任何原因,除非您一次完成了很多这些.
您提到的特定Kue库在其NPM页面上列出了这些功能:
因此,我认为如果您需要某些特定的排队功能,并且Kue如果它具有针对您的特定问题的最佳功能集,则您将使用该库,这是不言而喻的.
如果它很重要,您的代码res.send("ok")在完成异步任务之前以及在您知道它是否成功之前发送.有时会有这样做的理由,但有时您想要回复操作是否成功(您没有这样做).
基本上,排队的目的只是让您对它们的执行有更多的控制。
这可能用于限制发送的数量,优先处理其他操作,使流量平衡(例如,如果同时发送10000,则不要尝试同时发送所有10000并杀死)您的服务器)。
您将队列究竟用于什么目的以及它是否有好处,取决于您的实际情况和用例。归根结底,这只是控制流量。