NestJS 中的同步队列

Posted

技术标签:

【中文标题】NestJS 中的同步队列【英文标题】:Synchronous queuing in NestJS 【发布时间】:2021-12-17 09:23:51 【问题描述】:

我开发 NestJS 应用程序,我们将文件上传到服务器,然后上传到保管箱并从服务器中删除。问题是当我垃圾邮件请求保管箱给出错误“请求过多”时。我想排队这个工作,但是在用牛实现 Nest 队列之后,它是一样的,就像没有牛一样。我希望所有这些请求都会延迟排队。

【问题讨论】:

【参考方案1】:

由于您没有附加任何代码,因此我无法具体提出任何建议。我主要建议尝试尽可能少地发出请求(因为这是您的代码运行时间最长的原因)。

不要单独插入/更新/删除所有内容,而是尝试通过发布请求在组/列表中发送它,这样您就不必进行尽可能多的 API 调用。

基本上,而不是做:

foreach(item in list):
   postRequest(item)

做:

postRequest(list)

【讨论】:

嗯,但我的意思是当我在 Insomnia 请求中发送垃圾邮件以模拟不同用户是否同时发送 100 个文件时,会出现请求过多的错误,我想有一个时间间隔 beetwen这样做是从不同的用户上传 这真的取决于.. 我很难给出任何具体的建议,因为我没有你想要做什么的背景。那就是:你是在写前端/后端吗?服务器请求是否受到限制?端点是公开的吗?您无法控制前端吗?如果没有更具体的信息/代码,除了我上面所说的之外,我真的无法给你一个可靠的答案。

以上是关于NestJS 中的同步队列的主要内容,如果未能解决你的问题,请参考以下文章

使用 Nestjs 监听多个 RabbitMQ 队列

使用 NestJS 队列时关闭 redis 连接

iOS中的同步与异步队列

用于多处理同步的类似队列的对象

队列同步器——AQS

ios多线程同步异步、串行并行队列、死锁