1.2.4 • Published 6 months ago

@nestjs-enhanced/workers v1.2.4

Weekly downloads
-
License
ISC
Repository
-
Last release
6 months ago

Workers

A basic nestjs module for creating new threads to perform work. Currently supports child_process and worker_threads.

child_process actually spawns a new process from the running node.js process. It has its own memory space and it's own V8 instance. These provide more isolation and control over the environment in which something runs.

worker_threads create a new thread under the same V8 process. These tend to start up faster and can access some of the same memory through the use of SharedArrayBuffer.

See this article for a deeper dive into the differences between the two.

tldr; Generally, worker_threads is better suited for most workloads. However, do your own research and understand your use-case to make a better decision into what you're trying to solve.

Install:

npm install @nestjs-enhanced/workers

Usage:

Register Module

import { WorkersModule } from '@nestjs-enhanced/workers';

@Module({
  imports: [
    WorkersModule
  ],
  // ...
})
export class AppModule {
  // ...
}

Create a worker

import { Runtime, WorkerService } from '@nestjs-enhanced/workers';

@Injectable()
export class MyService {
  constructor (
    private workerService: WorkerService
  ) { }

  doSomeWork () {
    const path = 'path/to/your/worker.js'
    this.workerService.createWorker(path, { runtime: Runtime.worker_thread });
    this.workerService.getMessages(path)
      .subscribe((message) => {
        // message from your worker
      });
  }
}
// path/to/your/worker.js
import { parentPort } from 'worker_threads';


parentPort.on('message', () => {
  // do work

  parentPort?.postMessage('some message');
});

Future:

1.2.4

6 months ago

1.2.3

6 months ago

1.2.2

6 months ago

1.0.0-beta.1

7 months ago