LLaraNode
Packages

Queue Package

The @lara-node/queue package provides a job queue system with workers and a task scheduler.

Queue Package

The @lara-node/queue package provides a job queue system with workers and a task scheduler.

Installation

pnpm add @lara-node/queue @lara-node/core

Overview

Features include:

  • Multiple drivers -- Sync, Database, Redis
  • Job classes with lifecycle methods
  • Queue workers with daemon mode
  • Task scheduler with cron expressions
  • Failed job tracking and retry
  • Job encryption
  • Delays, retries, backoff

Quick Start

Create a Job

import { Job, Queueable } from "@lara-node/queue";

@Queueable()
class SendWelcomeEmail extends Job {
  constructor(private userId: number) {
    super();
  }

  async handle() {
    const user = await User.find(this.userId);
    await Mail.to(user.email).send(new WelcomeMail(user));
  }
}

Dispatch a Job

// Dispatch to queue
await SendWelcomeEmail.dispatch(userId);

// Dispatch with options
await SendWelcomeEmail.dispatch(userId).onQueue("emails").withDelay(60).withTries(3);

Key Exports

ExportDescription
JobBase job class
@Queueable()Job decorator
dispatch()Dispatch helper
PendingDispatchFluent dispatch builder
Queue / QueueManagerQueue manager
WorkerQueue worker daemon
Schedule / schedulerTask scheduler

Configuration

// config/queue.config.ts
export default {
  default: process.env.QUEUE_CONNECTION || "sync",
  connections: {
    sync: { driver: "sync" },
    database: { driver: "database", table: "jobs" },
    redis: {
      driver: "redis",
      host: process.env.REDIS_HOST,
      port: parseInt(process.env.REDIS_PORT || "6379"),
    },
  },
};

Next Steps