Enqueue jobs for running in the background. Can replace cron jobs.
- MongoDB
- Mongowave
The mongodb instance you're using must be set up as a replica set to be able to watch for changes.
Add the --replSet
option to your mongodb config:
mongod --replSet rs0 ...
Then log into your mongodb instance with mongo
and run rs.initiate()
.
More info on MongoDB setup here »
To allow the queue to be processed in parallel, remember to add this index to let the lock auto-expires after it has been used:
db.collection('lock').createIndex( { expiresAt: 1 }, { expireAfterSeconds: 0 } )
npm i @waveorb/queue
// Setup db
var mongodb = require('mongowave')
var db = await mongodb('firmalisten')
// Queue config, needs a db
var config = { db }
// Create queue
var queue = require('@waveorb/queue')(config)
// Queue data
var data = { from: 'mail@example.com', to: 'post@example.com' }
// Queue options
var options = {
name: 'mailer',
start: 'now',
repeat: 'every tuesday at 12'
}
// Listen for changes
queue.listen(options, async function(job) {
// Send email or whatever
})
// Add job to queue
queue.add(name, data)
The time options DSL are human readable, here are some examples:
now
10 seconds from now
24 hours from now
5 days from now
1 week from now
next friday at 23:00
every monday at 04
every friday at 03:00 and 19:30
every friday at 03:00, sunday at 04, saturday at 10:30:30
every 10 seconds
monday to friday at 04
monday, tuesday, wednesday, friday at 04
Clocks are 24 hours. You can specify hours, minutes and seconds: HH:MM:SS
.
Read more on the time string options at the klokk library page »
Created by Eldøy Projects