@camunda8/sdk
Version:
[](https://www.npmjs.com/package/@camunda8/sdk)
64 lines (63 loc) • 2.89 kB
TypeScript
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 {};