UNPKG

@penkov/tasks_queue

Version:

A lightweight PostgreSQL-backed task queue system with scheduling, retries, backoff strategies, and priority handling. Designed for efficiency and observability in modern Node.js applications.

93 lines (92 loc) 3.11 kB
import { Collection, Option } from "scats"; import { BackoffType, MissedRunStrategy, TaskPeriodType, TaskStatus } from "./tasks-model.js"; export declare class TaskDto { readonly id: number; readonly queue: string; readonly created: Date; readonly initialStart: Date; readonly started: Option<Date>; readonly finished: Option<Date>; readonly status: TaskStatus; readonly missedRunStrategy: MissedRunStrategy; readonly priority: number; readonly error: Option<string>; readonly backoff: number; readonly backoffType: BackoffType; readonly timeout: number; readonly name: Option<string>; readonly startAfter: Option<Date>; readonly repeatInterval: Option<number>; readonly repeatType: Option<TaskPeriodType>; readonly maxAttempts: number; readonly attempt: number; readonly payload: any; constructor(id: number, queue: string, created: Date, initialStart: Date, started: Option<Date>, finished: Option<Date>, status: TaskStatus, missedRunStrategy: MissedRunStrategy, priority: number, error: Option<string>, backoff: number, backoffType: BackoffType, timeout: number, name: Option<string>, startAfter: Option<Date>, repeatInterval: Option<number>, repeatType: Option<TaskPeriodType>, maxAttempts: number, attempt: number, payload: any); } export declare class TasksResult { readonly items: Collection<TaskDto>; readonly total: number; constructor(items: Collection<TaskDto>, total: number); } export declare class TaskView { id: number; queue: string; created: number; initialStart: number; started?: number; finished?: number; status: TaskStatus; missedRunStrategy: MissedRunStrategy; priority: number; error?: string; backoff: number; backoffType: BackoffType; timeout: number; name?: string; startAfter?: number; repeatInterval?: number; repeatType?: TaskPeriodType; maxAttempts: number; attempt: number; payload: any; static fromDto(dto: TaskDto): TaskView; } export declare class TasksResultView { items: TaskView[]; total: number; } export declare class QueueStat { readonly queueName: string; readonly p50: number; readonly p75: number; readonly p95: number; readonly p99: number; readonly p999: number; constructor(queueName: string, p50: number, p75: number, p95: number, p99: number, p999: number); } export declare class TasksCount { readonly queueName: string; readonly status: TaskStatus; readonly count: number; constructor(queueName: string, status: TaskStatus, count: number); } export declare class QueueStatView { queueName: string; p50: number; p75: number; p95: number; p99: number; p999: number; static fromDto(o: QueueStat): QueueStatView; } export declare class TasksCountView { queueName: string; status: TaskStatus; count: number; static fromDto(o: TasksCount): TasksCountView; } export declare class QueuesStat { waitTime: QueueStatView[]; workTime: QueueStatView[]; tasksCount: TasksCountView[]; }