gpt4 book ai didi

node.js - Node.js 需要作业队列吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:36:44 25 4
gpt4 key购买 nike

假设我有一个发送电子邮件的 express 服务:

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 集群来增加 Node 服务器可以处理的任务量。因此,队列是关于控制某些 CPU 或资源密集型任务的执行,当你有更多的事情要做,而不是你的服务器可以轻松地一次执行的时候。队列使您可以控制执行流程。

我看不出您显示的代码有任何理由使用作业队列,除非您同时执行大量这些操作。

具体https://github.com/OptimalBits/bull图书馆或 Kue library您提到的在其 NPM 页面上列出了这些功能:

  • 延迟工作
  • 并行工作负载的分配
  • 工作事件和进度pubsub
  • 工作 TTL
  • 可选的退避重试
  • Graceful workers 关闭
  • 全文搜索能力
  • RESTful JSON API
  • 丰富的集成用户界面
  • 无限滚动
  • 界面进度指示
  • 作业特定的日志记录

所以,我认为不言而喻,如果您需要一些特定的排队功能,您会添加一个队列,如果它具有最适合您的功能集,您会使用 Kue 库特殊问题。


以防万一,您的代码会在异步任务完成之前以及您知道它是否成功之前发送 res.send("ok")。有时这样做是有原因的,但有时你想就操作是否成功进行反馈(你没有这样做)。

关于node.js - Node.js 需要作业队列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44643030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com