filepile

file backed local work queues

npm install filepile
16 downloads in the last week
29 downloads in the last month

filepile Build Status

file backed work queues

use

var filepile = require('filepile');

// create a new pile called 'emails'
var pile = filepile('emails', function(details, done) {
    // details is whatever job data you provide
    // call done() when done
});

// add things to the pile
// the will be processed by the function above
pile({ to: 'foobar@example.com', body: 'hello' });

multiple producers single consumer

Each filepile will only allow for one consumer but multiple producers. Any named pile which already has a consumer on the same system will not allow another consumer to process jobs. If one of the consumers dies, then another consumer will start.

var cluster = require('cluster');

if (cluster.isMaster) {
    for (var i=0 ; i<4 ; ++i) {
        cluster.fork();
    }
    return;
}

var filepile = require('filepile');

// only one of the processes will invoke this function
var pile = filepile('emails', function(details, done) {
    console.log(details);
    done();
});

// both processes will generate "work"
setInterval(function() {
    pile({ foo: 'bar' });
}, 1000);

how it works

All producers write json files to a folder in /tmp. These files are read by the single consumer and processed. A lockfile is used to ensure that there is only one consumer.

The consumer listens using fs.watch for new files and processes them.

gotchas

filepile is not meant to work across machines at this time and will only ensure one consumer with multiple processes on the same machine.

install

npm install filepile

npm loves you