UNPKG

nats-jobs

Version:
38 lines (37 loc) 1.37 kB
import { ConsumerConfig, JsMsg, StreamConfig, JetStreamClient } from 'nats'; export interface Context { signal: AbortSignal; def: JobDef; js: JetStreamClient; } export interface JobDef { stream: string; streamConfig?: Partial<StreamConfig>; consumerConfig?: Partial<ConsumerConfig>; filterSubject?: string; /** How often to pull down messages from the consumer. */ pullInterval?: number; /** How many messages to pull at one time. */ batch?: number; /** Time to wait before reprocessing the message if processing fails. */ backoff?: number | number[]; /** How many times to attempt to process the message. */ numAttempts?: number; /** Automatically delay the ack_wait timeout. */ autoExtendAckTimeout?: boolean; perform(msg: JsMsg, context: Context): Promise<void>; /** Timeout in ms on the perform. Abort signal will trigger if timeout is reached. */ timeoutMs?: number; /** Expected time in ms for perform to complete. */ expectedMs?: number; } export interface Deferred<A> { done: (value: A) => void; promise: Promise<A>; } export type StopFn = () => Promise<void>; export interface BackoffOptions { numEntries?: number; repeatAfter?: number; } export type Events = 'start' | 'receive' | 'working' | 'complete' | 'error' | 'timeout' | 'pull' | 'stop' | 'noAck';