This plugin is inspired by JoSK for managing cronjob in Node.js cluster
npm install @kakang/fastify-cronjob --save
yarn add @kakang/fastify-cronjob
import { fastifyCronJob } from '@kakang/fastify-cronjob'
import { MongoDBAdapter } from '@kakang/fastify-cronjob/lib/adapter/mongodb'
import { MongoClient } from 'mongodb'
const client = new MongoClient('mongodb://127.0.0.1:27017')
await client.connect()
const db = client.db('cronjob')
fastify.register(fastifyCronJob, {
adapter: MongoDBAdapter,
adapterOptions: {
application: 'cronjob',
db
}
})
Job that runs on defined interval
fastify.cronjob.setInterval(async function(context) {
// run in async
}, 1000, 'async')
// if you perfer in sync
// please return Promise
fastify.cronjob.setInterval(function (context) {
const promise = {}
promise.promise = new Promise(function(resolve, reject) {
promise.resolve = resolve
promise.reject = reject
})
setImmediate(function() {
resolve()
})
return promise.promise
}, 1000, 'promise')
Job that runs on defined timeout
fastify.cronjob.setTimeout(async function(context) {
// run in async
}, 1000, 'async')
// if you perfer in sync
// please return Promise
fastify.cronjob.setTimeout(function (context) {
const promise = {}
promise.promise = new Promise(function(resolve, reject) {
promise.resolve = resolve
promise.reject = reject
})
setImmediate(function() {
resolve()
})
return promise.promise
}, 1000, 'promise')
Job that runs immediately
fastify.cronjob.setImmediate(async function(context) {
// run in async
}, 'async')
// if you perfer in sync
// please return Promise
fastify.cronjob.setImmediate(function (context) {
const promise = {}
promise.promise = new Promise(function(resolve, reject) {
promise.resolve = resolve
promise.reject = reject
})
setImmediate(function() {
resolve()
})
return promise.promise
}, 'promise')
Job that runs on defined cron string
fastify.cronjob.setCronJob(async function(context) {
// run in async
}, '* * * * * *', 'async')
// if you perfer in sync
// please return Promise
fastify.cronjob.setCronJob(function (context) {
const promise = {}
promise.promise = new Promise(function(resolve, reject) {
promise.resolve = resolve
promise.reject = reject
})
setImmediate(function() {
resolve()
})
return promise.promise
}, '* * * * * *', 'promise')
Job that runs immediately one follow the other.
fastify.cronjob.setLoopTask(async function(context) {
// run in async
}, 'async')
// if you perfer in sync
// please return Promise
fastify.cronjob.setLoopTask(function (context) {
const promise = {}
promise.promise = new Promise(function(resolve, reject) {
promise.resolve = resolve
promise.reject = reject
})
setImmediate(function() {
resolve()
})
return promise.promise
}, 'promise')
Remove cronjob by uid.
const uid = await fastify.cronjob.setInterval(async function(context) {
// run in async
}, 1000, 'async')
fastify.cronjob.clearInterval(uid)
Alias of .clearInterval