@waveorb/queue

1.0.1 • Public • Published

Waveorb Queue

Enqueue jobs for running in the background. Can replace cron jobs.

Requirements

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 »

Locking mechanism

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 } )

Install

npm i @waveorb/queue

Usage

// 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)

Time options

The time options DSL are human readable, here are some examples:

Start
  • now
  • 10 seconds from now
  • 24 hours from now
  • 5 days from now
  • 1 week from now
  • next friday at 23:00
Repeat
  • 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

Readme

Keywords

none

Package Sidebar

Install

npm i @waveorb/queue

Weekly Downloads

5

Version

1.0.1

License

none

Unpacked Size

4.38 kB

Total Files

3

Last publish

Collaborators

  • waveorb