que

0.1.2 • Public • Published

Que

One interface to many queue & worker backends.

Installation

npm install que

Supported backends

Usage

Connecting

var Que = require('que');
 
Que.connect(['gearman://127.0.0.1:4730'], function(){
    // all backends connected
});
 
Que.disconnect(function(){
    // all backends disconnected
});

Defining worker

var EchoReverseWorker = Que.define({
    job: 'echoReverse', // job name
    driver: 'gearman', // driver's name
    process: function(callback) { // processing function
        var result = this.params.message.split('').reverse().join(''); // this.params contains all the data you send, let's just reverse the string
        callback(false, { echo: result }); // first argument specifies error(none, in our case), second - response
    }
});

Submitting jobs

EchoReverseWorker.submit({ message: '2pac' }, function(err, response){ // second argument is optional
    response.echo == 'cap2'; // true
});

For CoffeeScript developers

You can define workers using CoffeeScript native class system:

class EchoReverseWorker extends Que.Model
    job: 'echoReverse'
    driver: 'gearman'
    
    process: (callback) ->
        result = @params.message.split('').reverse().join('')
        callback false, echo: result
 
EchoReverseWorker = Que.setup EchoReverseWorker # this is required, notice **Models** here, not just **Model**

Making own drivers

Your driver should implement this interface:

class SomeDriver
    @connect: (server, callback) ->
        # server is an URI, like protocol://127.0.0.1:1234
        # callback should be called when you connect to a backend
    
    @disconnect: (callback) ->
        # callback should be called when you disconnect from a backend
    
    @register: (name, handler) ->
        # name is the name of the job
        # handler is the function which handles the job
    
    @submit: (name, params) ->
        # name is the name of the job
        # params is the data that should be sent

After that, you should register your driver under chosen name:

Que.registerDriver 'someDriver', SomeDriver

Users of your driver will be able to connect to it using URL like someDriver://localhost:port/.

Tests

Run all the needed backends and execute mocha in Terminal.

License

MIT.

Readme

Keywords

none

Package Sidebar

Install

npm i que

Weekly Downloads

2

Version

0.1.2

License

MIT

Last publish

Collaborators

  • vdemedes