Skip to content

Commit

Permalink
(feature) add redis options with leader election over redis for CronJob
Browse files Browse the repository at this point in the history
  • Loading branch information
Natsuke committed Sep 3, 2015
0 parents commit 901b216
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
.DS_Store
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
language: nodejs
nodejs:
- iojs
1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require('./lib/cron-cluster')
27 changes: 27 additions & 0 deletions lib/cron-cluster.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@

var _ = require('lodash')
var OriginCronJob = require('cron').CronJob
var Leader = require('redis-leader')

module.exports = function (redis) {
var leader = new Leader(redis)

return {
CronJob: CronJob
}

function CronJob (cronTime, onTick) {
if (typeof cronTime !== 'string' && arguments.length === 1) {
onTick = cronTime.onTick
}

onTick = _.wrap(onTick, function (fn) {
leader.isLeader(function (isLeader) {
if (!isLeader) return
fn()
})
})

return new (OriginCronJob.bind.apply(OriginCronJob, arguments))
}
}
23 changes: 23 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "cron-cluster",
"version": "0.0.1",
"description": "A Cluster plugin for cron using redis",
"main": "index.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "tap test/*.js | faucet"
},
"author": "Andy Vanbutsele <[email protected]>",
"license": "ISC",
"dependencies": {
"cron": "^1.0.9",
"lodash": "^3.10.1",
"redis-leader": "^0.1.0"
},
"devDependencies": {
"faucet": "0.0.1",
"tap": "^1.4.0"
}
}
6 changes: 6 additions & 0 deletions test/cron-cluster.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
var test = require('tap').test

test('Should do something', function (t) {
t.plan(1)
t.equal(1, 1, '1 == 1')
})

0 comments on commit 901b216

Please sign in to comment.