diff --git a/docs/content/docs/developer-guide/vendure-worker.md b/docs/content/docs/developer-guide/vendure-worker.md new file mode 100644 index 0000000000..9467225cb6 --- /dev/null +++ b/docs/content/docs/developer-guide/vendure-worker.md @@ -0,0 +1,29 @@ +--- +title: "Vendure Worker" +weight: 0 +showtoc: true +--- + +# Vendure Worker + +The Vendure Worker is a process which is responsible for running computationally intensive or otherwise long-running tasks in the background. For example updating a search index or performing image transformations. + +The worker is started by calling the `bootstrapWorker()` function with the same configuration as is passed to the main server `bootstrap()`: + +```TypeScript +import { bootstrapWorker } from '@vendure/core'; + +import { config } from './vendure-config'; + +bootstrapWorker(config).catch(err => { + console.log(err); +}); +``` + +## Underlying architecture + +Internally, the Worker is an instance of a [NestJS microservice](https://docs.nestjs.com/microservices/basics). By default the TCP protocol is used to send messages to and receive reponses from the Worker, but other transports may be used such as Redis or gRPC. + +## Running on the main process + +There is an option `runInMainProcess` which, if set to `true` will cause the Worker to be bootstrapped along with the main application, without the need for a separate process running `bootstrapWorker`. This is mainly used for testing and development, and is not advised for production use, since it negates the benefits of running long tasks off of the main process.