Class FixedClusterPool<Data, Response>

A cluster pool with a fixed number of workers.

It is possible to perform tasks in sync or asynchronous mode as you prefer.

This pool selects the workers in a round robin fashion.

Author

Christopher Quadflieg

Since

2.0.0

Type Parameters

  • Data = unknown

    Type of data sent to the worker. This can only be serializable data.

  • Response = unknown

    Type of response of execution. This can only be serializable data.

Hierarchy

Constructors

  • Constructs a new poolifier fixed cluster pool.

    Type Parameters

    • Data = unknown

    • Response = unknown

    Parameters

    • numberOfWorkers: number

      Number of workers for this pool.

    • filePath: string

      Path to an implementation of a ClusterWorker file, which can be relative or absolute.

    • opts: ClusterPoolOptions = {}

      Options for this fixed cluster pool.

    Returns FixedClusterPool<Data, Response>

Properties

emitter?: PoolEmitter

Inherit Doc

filePath: string
max?: number

Inherit Doc

nextMessageId: number = 0

Id of the next message.

numberOfWorkers: number
promiseMap: Map<number, PromiseWorkerResponseWrapper<Worker, Response>> = ...

The promise map.

  • key: This is the message Id of each submitted task.
  • value: An object that contains the worker, the resolve function and the reject function.

When we receive a message from the worker we get a map entry and resolve/reject the promise based on the message.

workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

Worker choice strategy instance implementing the worker choice algorithm.

Default to a strategy implementing a round robin algorithm.

workers: Worker[] = []

Inherit Doc

workersTasksUsage: Map<Worker, TasksUsage> = ...

Inherit Doc

Accessors

  • get numberOfRunningTasks(): number
  • Inherit Doc

    Returns number

Methods

  • Hook executed after the worker task promise resolution. Can be overridden.

    Parameters

    • message: MessageValue<Response, unknown>

      The received message.

    • promise: PromiseWorkerResponseWrapper<Worker, Response>

      The Promise response.

    Returns void

  • Inherit Doc

    Parameters

    • worker: Worker

    Returns void

  • Hook executed before the worker task promise resolution. Can be overridden.

    Parameters

    • worker: Worker

      The worker.

    Returns void

  • Chooses a worker for the next task.

    The default implementation uses a round robin algorithm to distribute the load.

    Returns

    Worker.

    Returns Worker

  • Creates a new worker for this pool and sets it up completely.

    Returns

    New, completely set up worker.

    Returns Worker

  • Inherit Doc

    Parameters

    • worker: Worker

    Returns void

  • Inherit Doc

    Parameters

    • data: Data

    Returns Promise<Response>

  • Inherit Doc

    Returns false | Worker

  • Inherit Doc

    Parameters

    • worker: Worker

    Returns undefined | number

  • Inherit Doc

    Parameters

    • worker: Worker

    Returns number

  • Inherit Doc

    Parameters

    • worker: Worker

    Returns undefined | number

  • Initializes tasks usage statistics.

    Parameters

    • worker: Worker

      The worker.

    Returns void

  • Parameters

    • worker: Worker
    • messageId: number

    Returns Promise<Response>

  • Inherit Doc

    Type Parameters

    • Message

    Parameters

    • worker: Worker
    • listener: ((message: MessageValue<Message, unknown>) => void)
        • (message: MessageValue<Message, unknown>): void
        • Parameters

          • message: MessageValue<Message, unknown>

          Returns void

    Returns void

  • Removes the given worker from the pool.

    Parameters

    • worker: Worker

      The worker that will be removed.

    Returns void

  • Inherit Doc

    Parameters

    • worker: Worker
    • message: MessageValue<Data, unknown>

    Returns void

  • Inherit Doc

    Parameters

    • workerChoiceStrategy: "ROUND_ROBIN" | "LESS_RECENTLY_USED" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN"

    Returns void

  • This function is the listener registered for each worker.

    Returns

    The listener function to execute when a message is received from a worker.

    Returns ((message: MessageValue<Response, unknown>) => void)

      • (message: MessageValue<Response, unknown>): void
      • This function is the listener registered for each worker.

        Returns

        The listener function to execute when a message is received from a worker.

        Parameters

        • message: MessageValue<Response, unknown>

        Returns void

Generated using TypeDoc