当前位置 : 主页 > 网页制作 > Nodejs >

Node.js是否需要一个作业队列?

来源:互联网 收集:自由互联 发布时间:2021-06-16
说我有快递服务发送电子邮件: app.post('/send', function(req, res) { sendEmailAsync(req.body).catch(console.error) res.send('ok')}) 这很有效. 我想知道在这里引入一个工作队列有什么好处?像Kue. Does Node.
说我有快递服务发送电子邮件:

app.post('/send', function(req, res) {
  sendEmailAsync(req.body).catch(console.error)
  res.send('ok')
})

这很有效.

我想知道在这里引入一个工作队列有什么好处?像Kue.

Does Node.js need a job queue?

不是一般的.

作业队列是解决特定问题的,通常比单个node.js进程可以处理更多,因此您可以“排队”要做的事情,甚至可以将它们分发给其他进程来处理.

您甚至可能具有不同类型作业的优先级,或者想要控制作业执行的速率(假设您有一个速率限制上限,您必须在某个外部服务器上保持低于或者只是不想压倒其他服务器) .还可以使用nodejs群集来增加节点服务器可以处理的任务量.因此,当您有更多操作要比服务器可以一次轻松执行时,队列就是控制某些CPU或资源密集型任务的执行.队列使您可以控制执行流程.

我没有看到您显示的代码使用作业队列的任何原因,除非您一次完成了很多这些.

您提到的具体Kue library在其NPM页面上列出了这些功能:

>延迟工作
>并行工作负荷的分配
>工作事件和进展pubsub
>工作TTL
>带退避的可选重试
>优雅的工人关机
>全文搜索功能
> RESTful JSON API
>丰富的集成UI
>无限滚动
> UI进度指示
>特定于作业的日志

因此,我认为如果您需要一些特定的排队功能,并且如果它具有针对您的特定问题的最佳功能集,那么您将使用Kue库,这是不言而喻的.

如果它很重要,你的代码在完成异步任务之前和你知道它是否成功之前发送res.send(“ok”).有时会有这样做的理由,但有时您想要回复操作是否成功(您没有这样做).

网友评论