jobify
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 }>()
.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);
})
.repeatable(
{ date: new Date().toISOString() },
{
pattern: "* * * * *",
}
);
TODO:
- maybe pg-boss adapter?
- hooks?
- make job title optional?
- guide with bull-board and some improves for usage