Skip to content

createProcessors

createProcessors<TClientJobTypeDefinitions, TStateAdapter, TJobTypeDefinitions, TExternalJobTypeDefinitions, TProcessors, TAttemptMiddleware, TMergedJobTypeDefinitions>(options): Processors<TJobTypeDefinitions, TAttemptMiddleware>

Defined in: packages/core/src/worker/create-processors.ts:54

Define a processor registry for a job type slice with full type inference. Handlers are type-checked against the slice’s own definitions plus any external definitions it declares (for cross-slice blocker / continueWith references). The returned registry is plugged into createInProcessWorker.

Registry-level backoffConfig / attemptConfig cascade onto every processor in this registry unless that processor overrides them.

TClientJobTypeDefinitions extends BaseJobTypeDefinitions

TStateAdapter extends StateAdapter<any, any>

TJobTypeDefinitions extends BaseJobTypeDefinitions

TExternalJobTypeDefinitions extends BaseJobTypeDefinitions

TProcessors extends string

TAttemptMiddleware extends readonly AnyAttemptMiddleware[] = readonly []

TMergedJobTypeDefinitions extends BaseJobTypeDefinitions = MergedDefs<TJobTypeDefinitions, TExternalJobTypeDefinitions>

AttemptConfig

TAttemptMiddleware & readonly AttemptMiddleware<TStateAdapter, any, any, any, any>[]

BackoffConfig

[TJobTypeDefinitions] extends [TClientJobTypeDefinitions] ? Client<TClientJobTypeDefinitions, TStateAdapter> : `Error: client is missing required job types: ${Exclude<keyof TJobTypeDefinitions & string, keyof TClientJobTypeDefinitions & string>}`

JobTypes<TJobTypeDefinitions, TExternalJobTypeDefinitions>

{ [K in string]: InProcessWorkerProcessor<TStateAdapter, TMergedJobTypeDefinitions, K, MergedAttemptHandlerCtx<TAttemptMiddleware>, MergedPrepareCtx<TAttemptMiddleware>, MergedStepCtx<TAttemptMiddleware>, MergedCompleteCtx<TAttemptMiddleware>> } & Record<Exclude<TProcessors, keyof TJobTypeDefinitions & string>, never>

Processors<TJobTypeDefinitions, TAttemptMiddleware>

const orderProcessors = createProcessors({
client,
jobTypes: orderJobTypes,
attemptMiddleware: [tracingMiddleware, loggerMiddleware],
processors: {
"orders.create": {
attemptHandler: async ({ complete, traceId, log }) =>
complete(async ({ finish }) => finish({ output: { orderId: "1" } })),
},
},
});