nodejs和sqs:图片上传到s3并进行后处理



我有一个nodejs服务器在express用户可以注册并添加头像。这个头像-上传到服务器后-裁剪为200x200px和一些其他图像更改与锐利。我想通过添加一个连接到amazon SQS的工作线程来优化这个过程。我的策略(如果我错了,请纠正我)。

  1. 上传文件(原始)到S3文件夹,而不是先上传到我的nodejs服务器(所以用户->S3代替user——>节点——比;s3)。
  2. 向来自nodejs的SQS队列添加消息,该消息带有新头像被上载到s3的有效负载消息(在消息的json有效负载中包含头像的url和用户ID)。
  3. 启动一个监听队列新消息的工作线程。它接收到一条新消息,工作线程将对文件进行修改(裁剪,…)并将其上传到s3。

关于这个策略我有几个问题?

  1. 如何添加一个工作线程到我的nodejs服务器。我有一个有2个CPU的数字海洋液滴,我使用PM2来生成我的nodejs服务器到两个CPU。我如何添加一个工作线程到这个系统?或者我应该用这个工作线程添加第二个服务器吗?
  2. 我可以在工作线程中做数据库操作吗?

提前感谢!

对于这些类型的需求,您可以检出BullMQ,其中需要将逻辑与客户端逻辑分开后处理。

简单地说,您需要一个消息队列辅助系统来对作业进行后处理。这可以使用许多可用的队列系统来实现,比如RabbitMQ,或者我之前提到的(我个人更喜欢NodeJS)。

最新更新