seneca-quartz-scheduler

0.1.3 • Public • Published

seneca-quartz-scheduler

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.

Support

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

Visually

Scheduler Data Flow

Quick examples

Schedule a single future event:

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

seneca.use('quartz-scheduler');

seneca.ready(function(err){
  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 = args.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...
  seneca.act({
    role:'scheduler',
    cmd:'register',
    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;
    }
  );

})

Install

npm install seneca
npm install seneca-quartz-scheduler

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

Usage

To load the plugin:

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

For available options, see node-quartz-scheduler.

Actions

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

ACTION: role:scheduler, cmd:register

Register a task with the scheduler.

Arguments:

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

Logging

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.

Test

Run tests with:

npm test

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

Package Sidebar

Install

npm i seneca-quartz-scheduler

Weekly Downloads

6

Version

0.1.3

License

MIT

Last publish

Collaborators

  • darsee
  • guyellis
  • mihaidma
  • nherment
  • rjrodger