Norwegian Parcel Mail

    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.

    Install

    npm i seneca-quartz-scheduler

    DownloadsWeekly Downloads

    2

    Version

    0.1.3

    License

    MIT

    Last publish

    Collaborators

    • darsee
    • guyellis
    • mihaidma
    • nherment
    • rjrodger