UNPKG

@camunda8/sdk

Version:

[![NPM](https://nodei.co/npm/@camunda8/sdk.png)](https://www.npmjs.com/package/@camunda8/sdk)

64 lines (63 loc) 2.89 kB
import TypedEmitter from 'typed-emitter'; import { LosslessDto } from '../../lib'; import { ActivateJobsRequest, IProcessVariables, JobCompletionInterfaceRest, MustReturnJobActionAcknowledgement } from '../../zeebe/types'; import { Ctor, RestJob } from './C8Dto'; import { Logger } from './C8Logger'; import { CamundaRestClient } from './CamundaRestClient'; type CamundaJobWorkerEvents = { pollError: (error: Error) => void; start: () => void; stop: () => void; poll: ({ currentlyActiveJobCount, maxJobsToActivate, worker, }: { /** How many jobs are currently activated */ currentlyActiveJobCount: number; /** The max number of jobs we are requesting to activate */ maxJobsToActivate: number; /** The worker name */ worker: string; }) => void; backoff: (backoffDuration: number) => void; work: (jobs: RestJob<unknown, unknown>[]) => void; }; export interface CamundaJobWorkerConfig<VariablesDto extends LosslessDto, CustomHeadersDto extends LosslessDto> extends ActivateJobsRequest { inputVariableDto?: Ctor<VariablesDto>; customHeadersDto?: Ctor<CustomHeadersDto>; /** How often the worker will poll for new jobs. Defaults to 300ms */ pollIntervalMs?: number; jobHandler: (job: RestJob<VariablesDto, CustomHeadersDto> & JobCompletionInterfaceRest<IProcessVariables>, log: Logger) => MustReturnJobActionAcknowledgement; logger?: Logger; /** Default: true. Start the worker polling immediately. If set to `false`, call the worker's `start()` method to start polling for work. */ autoStart?: boolean; maxBackoffTimeMs?: number; } declare const CamundaJobWorker_base: new () => TypedEmitter<CamundaJobWorkerEvents>; export declare class CamundaJobWorker<VariablesDto extends LosslessDto, CustomHeadersDto extends LosslessDto> extends CamundaJobWorker_base { private readonly config; private readonly restClient; currentlyActiveJobCount: number; capacity: number; private loopHandle?; private pollInterval; private pollLock; private backoffTimer; private backoffRetryCount; private maxBackoffTimeMs; log: Logger; logMeta: () => { worker: string; type: string; pollIntervalMs: number; capacity: number; currentload: number; }; stopping: boolean; constructor(config: CamundaJobWorkerConfig<VariablesDto, CustomHeadersDto>, restClient: CamundaRestClient); start(): void; /** Stops the Job Worker polling for more jobs. If await this call, and it will return as soon as all currently active jobs are completed. * The deadline for all currently active jobs to complete is 30s by default. If the active jobs do not complete by the deadline, this method will throw. */ stop(deadlineMs?: number): Promise<unknown>; private poll; private handleJob; } export {};