在 Nest.js 应用程序中使用工作线程的正确方法

ooo*_*opp 8 node.js nestjs

我正在创建一个 Nest.js 应用程序,并希望考虑该应用程序的可扩展性。我发现基本上有两种扩展方法:集群或工作线程。我已经在这里询问了有关 Node.js 应用程序的可扩展性的问题Docker vs Cluster with Node.js。并发现最好用 docker 包装应用程序并从中创建克隆,而不是集群。所以,我已经使用 Nest.js 应用程序做到了这一点,但问题是:

  1. 我们如何在 Nest.js 中使用工作线程来处理 CPU 密集型任务?
  2. 我们应该只导入工作线程并使用它,还是 Nest.js 中有特殊的语法允许我们使用工作线程?

ZeN*_*tok 5

如果您想处理 CPU 密集型任务,我已经写了一篇关于此的博客文章,因为我遇到了同样的问题。

基本上在与工作线程关联的 js 文件中,您可以使用Nest 独立应用程序,它是 IoC 容器的包装器。

//  workerThread.js
async function run() {
const app = await NestFactory.createApplicationContext(AppModule);
// application logic...
}
run();
Run Code Online (Sandbox Code Playgroud)


Jay*_*iel 2

NestJS 是一个 NodeJS 框架,依赖注入是它的主要吸引力。话虽如此,基于类的架构通常是最好的方法。现在,您完全没有理由不能直接导入模块(类似于 Node/Typescript 中的方式)并使用该库。不需要特殊的语法,除非您决定创建动态模块(这可能不是必需的)。