Skip to main content

Interface: WorkerOptions

worker.WorkerOptions

Options to configure the Worker

Properties#

activities#

Optional activities: ActivityInterface

Mapping of activity name to implementation.

Automatically discovered from ${workDir}/activities if workDir is provided.


dataConverter#

Optional dataConverter: DataConverter

TODO: document, figure out how to propagate this to the workflow isolate


interceptors#

Optional interceptors: WorkerInterceptors

A mapping of interceptor type to a list of factories or module paths


isolateExecutionTimeout#

Optional isolateExecutionTimeout: string | number

Time to wait for result when calling a Workflow isolate function.

format ms formatted string or number of milliseconds

default 1s


isolatePoolSize#

Optional isolatePoolSize: number

Controls number of v8 isolates the Worker should create.

New Workflows are created on this pool in a round-robin fashion.

default 8


maxCachedWorkflows#

Optional maxCachedWorkflows: number

The number of Workflow isolates to keep in cached in memory

Cached Workflows continue execution from their last stopping point. If the Worker is asked to run an uncached Workflow, it will need to replay the entire Workflow history. Use as a dial for trading memory for CPU time.

You should be able to fit about 500 Workflows per GB of memory dependening on your Workflow bundle size. For the SDK test Workflows, we managed to fit 750 Workflows per GB.

This number is impacted by the the Worker's maxIsolateMemoryMB option.

default max(os.totalmem() / 1GiB - 1, 1) * 500


maxConcurrentActivityTaskExecutions#

Optional maxConcurrentActivityTaskExecutions: number

Maximum number of Activity tasks to execute concurrently. Adjust this to improve Worker resource consumption.

default 100


maxConcurrentActivityTaskPolls#

Optional maxConcurrentActivityTaskPolls: number

Maximum number of concurrent poll Activity task requests to perform at a time. Higher values will result in higher throughput and load on the Worker. If your Worker is overloaded, tasks might start timing out in which case, reduce this value.

default 5


maxConcurrentWorkflowTaskExecutions#

Optional maxConcurrentWorkflowTaskExecutions: number

Maximum number of Workflow tasks to execute concurrently. Adjust this to improve Worker resource consumption.

default 100


maxConcurrentWorkflowTaskPolls#

Optional maxConcurrentWorkflowTaskPolls: number

Maximum number of concurrent poll Workflow task requests to perform at a time. Higher values will result in higher throughput and load on the Worker. If your Worker is overloaded, tasks might start timing out in which case, reduce this value.

default 5


maxIsolateMemoryMB#

Optional maxIsolateMemoryMB: number

Memory limit in MB for the Workflow v8 isolate.

If this limit is exceeded the isolate will be disposed and the worker will crash.

default max(os.totalmem() - 1GiB, 1GiB)


nodeModulesPath#

Optional nodeModulesPath: string

Path for webpack to look up modules in for bundling the Workflow code. Automatically discovered if workDir is provided.

default ${workDir}/../node_modules


nonStickyToStickyPollRatio#

Optional nonStickyToStickyPollRatio: number

maxConcurrentWorkflowTaskPolls * this number = the number of max pollers that will be allowed for the nonsticky queue when sticky tasks are enabled. If both defaults are used, the sticky queue will allow 4 max pollers while the nonsticky queue will allow one. The minimum for either poller is 1, so if max_concurrent_wft_polls is 1 and sticky queues are enabled, there will be 2 concurrent polls.

default 0.2


shutdownGraceTime#

Optional shutdownGraceTime: string | number

Time to wait for pending tasks to drain after shutdown was requested.

format ms formatted string or number of milliseconds


shutdownSignals#

Optional shutdownSignals: Signals[]

Automatically shut down worker on any of these signals.

default

['SIGINT', 'SIGTERM', 'SIGQUIT']

stickyQueueScheduleToStartTimeout#

Optional stickyQueueScheduleToStartTimeout: string

How long a workflow task is allowed to sit on the sticky queue before it is timed out and moved to the non-sticky queue where it may be picked up by any worker.

format ms formatted string

default 10s


taskQueue#

taskQueue: string

The task queue the worker will pull from


workDir#

Optional workDir: string

If provided, automatically discover Workflows and Activities relative to path.

see activities, workflowsPath, and nodeModulesPath


workflowsPath#

Optional workflowsPath: string

Path to look up workflows in. Automatically discovered if workDir is provided.

default ${workDir}/workflows