jobify
TypeScript icon, indicating that this package has built-in type declarations

0.1.6 • Public • Published

jobify

npm npm downloads JSR JSR Score

Type-safe and much simpler wrapper for the BullMQ library.

[!WARNING] This project is in the MVP state and the API may still change a lot. At the moment, the project fits the requirements of the project rather than general purpose

Usage

import { initJobify } from "jobify";
import IORedis from "ioredis";

const redis = new IORedis({
    maxRetriesPerRequest: null,
});

const defineJob = initJobify(redis);

const job1 = defineJob("some", {
    queue: {
        defaultJobOptions: {
            delay: 100,
        },
    },
})
    .input<{ date: string }>()
    // WORKER OPTIONS
    .options({
        limiter: {
            max: 10,
            duration: 1000,
        },
    })
    .action(async (job) => {
        console.log("running", job.data.date);
        //       ^?
    });

await job1.add(
    "some",
    { date: new Date().toISOString() },
    {
        delay: 5000,
    }
);

const job2 = await defineJob("some-cron")
    .input<{ date: string }>()
    .options({
        limiter: {
            max: 10,
            duration: 1000,
        },
    })
    .action(async (job) => {
        console.log("running", job.data.date);
        //       ^?
    })
    // it will run every minute and will not be duplicated during reboots.
    .repeatable({
        every: 60 * 1000,
    });

Workers defaults

We add some options by default to Workers

{
    removeOnComplete: {
		count: 20,
	},
	removeOnFail: {
		age: 24 * 3600,
		count: 1000,
    }
}

We add it because it recommended in going to production

TODO:

  • maybe pg-boss adapter?
  • hooks?
  • make job title optional?
  • guide with bull-board and some improves for usage

Package Sidebar

Install

npm i jobify

Weekly Downloads

72

Version

0.1.6

License

none

Unpacked Size

8.9 kB

Total Files

9

Last publish

Collaborators

  • skravets