Skip to content

Cron based scheduler library that dynamically creates cron jobs running on a sql database

License

Notifications You must be signed in to change notification settings

SchedulerX/scheduler4js

Repository files navigation

Scheduler4js

Scheduler4js is a library for scheduling tasks in Node.JS. This library makes easier to dynamically create cron jobs running on sql database from client side.

Feature scheduler4js
Backend Postgresql/Mssql
Priorities
Concurrency
Global events
Atomic ops
Persistence
Supports long running jobs
Supports logging
Supports group jobs
Optimized for Jobs

Installation

npm i scheduler4js

Usage:

This library provides a schedule class that accepts a task function and a config representing when the task should be run.

Create db connection and library config to create instance of the library:

TS

import { Scheduler, Frequency, Timezone, CronUtil } from "scheduler4js";

JS

const { Scheduler, Frequency, Timezone, CronUtil } = require("scheduler4js");
async function example() {
  const dbConfig = {
    port: 5432,
    host: "localhost",
    username: "postgres",
    password: "password",
    dialect: "postgres",
    database: "scheduler4js",
    logging: false,
  };

  const config = {
    frequency: Frequency.ONCE_IN_HALF_MINUTE,
    lockLifetime: 6 * 1000,
    type: "x",
    kick: true,
  };

  const scheduler = await Scheduler.init({ dbConfig, config });

  scheduler.enqueueJob({
    name: "example",
    concurrency: 1,
    type: "x",
    timezone: Timezone.ASIA_DUBAI,
    cron: CronUtil.EVERY_X_MINUTE(1),
    lockLimit: 1,
    saveLog: false,
    priority: 0,
    fn: () => {
      console.log(`Job run at the time of ${new Date()}`);
    },
  });

  scheduler.on("begin", (job) => {
    console.log("begin", job);
  });

  scheduler.on("completed", (job) => {
    console.log("completed", job);
  });

  scheduler.on("fail", (err, job) => {
    console.log("fail", err, job);
  });
}

example();

API

Schedules a task to repeat at the specified date.

  • name: The name of the job
  • concurrency: The concurrency of the job
  • type: The type of the job which shows which executor should execute the given job
  • lockLimit: It shows the number of lock limit
  • fn: A function to run when the scheduled time arrives.
  • cron: It's cron expression representing the time to run the task again and again.
  • saveLog: It saves the result of the given jobs when they run
  • priority: Reorder jobs according to the given priority
  • frequency: It specifies the frequency which master cron job repeats in a minute
  • lockLifetime: It shows the lock life time of the jobs in ms
  • kick: To kick jobs to run

License

MIT