Seneca quartz-scheduler plugin

Usage no npm install needed!

<script type="module">
  import senecaQuartzScheduler from '';



A scheduler plugin for the Seneca toolkit that wraps node-quartz-scheduler.

Quartz does not expose HTTP services by itself - you'll need to build (maven) a war file from quartz-http.


If you're using this module, feel free to contact us on twitter if you have any questions: @wildfiction or @darsee

Current Version: 0.1.0

Tested on: node 0.10.31, seneca 0.5.21


Scheduler Data Flow

Quick examples

Schedule a single future event:

var seneca = require('seneca')();


  if( err ) return console.log(err);

  // Setup the receiver.
  // When the scheduler calls back to your web site then the cmd 'event'
  // is raised on the 'scheduler' micro-service. By hooking into this
  // you can route the executed event to the appropriate place, usually
  // another micro-service.
  this.add({role:'customRole', cmd:'myCommand'}, function(args, callback){
    var seneca = this;

    // args contain the payload you sent to the scheduler when you originally
    // set-it-up with the 'register' cmd.
    var name =; // hello world

    // Hence the scheduler can call any microservice that you have in your application.
    // The only restriction is that the payload needs to be serializable into JSON


  // Register an event (job) to fire at some point in the future...
    when: new Date(2016, 5, 1),
    args: {role: 'customRole', cmd: 'myCommand', name: 'hello world'}
    }, function(err, data) {
      // If there is no error then data will have a property called jobId.
      // This was generated by the quartz-scheduler and you should store this
      // if you ever want to cancel or update the job that you just scheduled.
      // If you never want to cancel or update the job then you can discard this value.
      var jobId = data.jobId;



npm install seneca
npm install seneca-quartz-scheduler

You'll need the seneca module to use this module - it's just a plugin.


To load the plugin:

seneca.use('quartz-scheduler', { ... options ... })

For available options, see node-quartz-scheduler.


All actions provide results via the standard callback format: function(error,data){ ... }.

ACTION: role:scheduler, cmd:register

Register a task with the scheduler.


  • when: a Date object
  • args: A JSON object of the seneca command you want executed to you when the scheduler triggers


To see what this plugin is doing, try:

node your-app.js --seneca.log=plugin:quartz-scheduler

This will print action logs and plugin logs for the user plugin. To skip the action logs, use:

node your-app.js --seneca.log=type:plugin,plugin:quartz-scheduler

For more logging options, see the Seneca logging tutorial.


Run tests with:

npm test

You'll need a scheduler running for the tests to communicate with.