@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
TypeScript
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[];
}