Comparing version 1.3.4 to 1.3.5
100
cli/cl.js
@@ -1,5 +0,5 @@ | ||
var winston = require ('winston'); | ||
var program = require ('commander'); | ||
program | ||
program | ||
.version ('0.0.1') | ||
@@ -16,33 +16,4 @@ .usage ('[options]') | ||
.option ('-t, --stats <value>', 'use stats backend. defaults to \'mem\'') | ||
.option ('-v, --verbose', 'verbose log') | ||
.option ('-l, --log [value]', 'use logfile, defaults to stderr/console') | ||
.parse (process.argv); | ||
var logger = undefined; | ||
if (program.log) { | ||
logger = new (winston.Logger)({ | ||
transports: [ | ||
new (winston.transports.File)({ | ||
filename: program.log, | ||
level: (program.verbose ? 'verbose' : 'info'), | ||
maxsize:1024*1024*10, | ||
maxFiles: 5, | ||
handleExceptions: true, | ||
humanReadableUnhandledException: true, | ||
json: false | ||
}) | ||
] | ||
}); | ||
} | ||
else { | ||
logger = new (winston.Logger)({ | ||
transports: [ | ||
new (winston.transports.Console)({ | ||
level: (program.verbose ? 'verbose' : 'info') | ||
}) | ||
] | ||
}); | ||
} | ||
var MQ = require ('../backends/' + (program.backend || 'mongo')); | ||
@@ -61,16 +32,16 @@ | ||
if (err) { | ||
logger.error ('consume_loop: get err --> %s', err, {}); | ||
console.error ('consume_loop: get err --> %s', err, {}); | ||
} | ||
if (program.dumpProduced) { | ||
logger.info ('%j', res, {}); | ||
console.log ('%j', res, {}); | ||
} | ||
else if (program.verbose) { | ||
logger.verbose ('consume_loop: get %j', res, {}); | ||
console.log ('consume_loop: get %j', res, {}); | ||
} | ||
if (((n - 1) % 1000) == 0) { | ||
if (((n - 1) % 10000) == 0) { | ||
var diff = process.hrtime (get_hrtime); | ||
var elapsed = (diff[0] * 1e9 + diff[1]) / 1e6; | ||
logger.info ('consume_loop: get remaining %d, elapsed %d', n - 1, elapsed); | ||
console.log ('consume_loop: get remaining %d, elapsed %d', n - 1, elapsed); | ||
get_hrtime = process.hrtime (); | ||
@@ -96,13 +67,13 @@ } | ||
if (err) { | ||
logger.error ('produce_loop: put err --> %s', err, {}); | ||
console.error ('produce_loop: put err --> %s', err, {}); | ||
} | ||
if (program.verbose) { | ||
logger.verbose ('produce_loop: put %s', res, {}); | ||
console.log ('produce_loop: put %s', res, {}); | ||
} | ||
if (((n - 1) % 1000) == 0) { | ||
if (((n - 1) % 10000) == 0) { | ||
var diff = process.hrtime (put_hrtime); | ||
var elapsed = (diff[0] * 1e9 + diff[1]) / 1e6; | ||
logger.info ('produce_loop: put remaining: %d, elapsed %d', n - 1, elapsed); | ||
console.log ('produce_loop: put remaining: %d, elapsed %d', n - 1, elapsed); | ||
put_hrtime = process.hrtime (); | ||
@@ -115,38 +86,31 @@ } | ||
MQ ({logger: logger}, function (err, factory) { | ||
if (err) { | ||
return logger.error ('MQ.init: %s', err, {}); | ||
} | ||
var q_opts = {}; | ||
logger.verbose ('MQ.init: backend initiated'); | ||
var q_opts = { | ||
logger: logger | ||
}; | ||
if (program.verbose) { | ||
q_opts.level = 'verbose' | ||
if (program.signaller) { | ||
var signal_provider = require ('../signal/' + program.signaller); | ||
q_opts.signaller = { | ||
provider: new signal_provider () | ||
} | ||
console.log ('use signaller %s', signal_provider.Type()) | ||
} | ||
if (program.signaller) { | ||
var signal_provider = require ('../signal/' + program.signaller); | ||
q_opts.signaller = { | ||
provider: new signal_provider () | ||
} | ||
if (program.stats) { | ||
var stats_provider = require ('../stats/' + program.stats); | ||
q_opts.stats = { | ||
provider: new stats_provider () | ||
} | ||
if (program.stats) { | ||
var stats_provider = require ('../stats/' + program.stats); | ||
q_opts.stats = { | ||
provider: new stats_provider () | ||
} | ||
} | ||
MQ (q_opts, function (err, factory) { | ||
if (err) { | ||
return console.error ('MQ.init: %s', err, {}); | ||
} | ||
logger.verbose ('MQ.init: creating queue with options %j', q_opts, {}); | ||
console.log ('MQ.init: backend initiated'); | ||
var q = factory.queue ('test', q_opts); | ||
var q = factory.queue ('test', {}); | ||
if (program.consumer) { | ||
logger.verbose ('MQ.init: initiating consume loop'); | ||
console.log ('MQ.init: initiating consume loop'); | ||
consume_loop (q, program.consumerNum); | ||
@@ -156,5 +120,5 @@ } | ||
if (program.producer) { | ||
logger.verbose ('MQ.init: initiating produce loop'); | ||
console.log ('MQ.init: initiating produce loop'); | ||
produce_loop (q, program.producerNum); | ||
} | ||
}); |
{ | ||
"name": "keuss", | ||
"version": "1.3.4", | ||
"version": "1.3.5", | ||
"keywords": [ | ||
"queue", | ||
"persistent", | ||
"job", | ||
@@ -33,3 +34,4 @@ "mongodb", | ||
"mongodb": "2.2.34", | ||
"uuid": "3.2.1" | ||
"uuid": "3.2.1", | ||
"mubsub": "1.4.0" | ||
}, | ||
@@ -36,0 +38,0 @@ "devDependencies": { |
# keuss | ||
Job Queues an pipelines on selectable backends (for now: mongodb, redis) for node.js | ||
Job Queues an pipelines on selectable backends (for now: mongodb and redis) for node.js | ||
# Contents | ||
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
- [About](#about) | ||
- [Concepts](#concepts) | ||
- [Queue](#queue) | ||
- [Pipeline](#pipeline) | ||
- [Storage](#storage) | ||
- [keuss](#keuss) | ||
- [Contents](#contents) | ||
- [About](#about) | ||
- [Concepts](#concepts) | ||
- [Queue](#queue) | ||
- [Pipeline](#pipeline) | ||
- [Storage](#storage) | ||
- [Signaller](#signaller) | ||
- [Stats](#stats) | ||
- [How all fits together](#how-all-fits-together) | ||
- [Install](#install) | ||
- [Usage](#usage) | ||
- [Factory API](#factory-api) | ||
- [Initialization](#initialization) | ||
- [Queue creation](#queue-creation) | ||
- [Signaller](#signaller) | ||
- [Stats](#stats) | ||
- [How all fits together](#how-all-fits-together) | ||
- [Install](#install) | ||
- [Usage](#usage) | ||
- [Factory API](#factory-api) | ||
- [Initialization](#initialization) | ||
- [Queue creation](#queue-creation) | ||
- [Signaller](#signaller-1) | ||
- [Stats](#stats-1) | ||
- [Queue API](#queue-api) | ||
- [Get Stats](#get-stats) | ||
- [Queue name](#queue-name) | ||
- [Queue type](#queue-type) | ||
- [Queue occupation](#queue-occupation) | ||
- [Total Queue occupation](#total-queue-occupation) | ||
- [Time of schedule of next message](#time-of-schedule-of-next-message) | ||
- [Add element to queue](#add-element-to-queue) | ||
- [Get element from queue](#get-element-from-queue) | ||
- [Cancel a pending Pop](#cancel-a-pending-pop) | ||
- [Commit a reserved element](#commit-a-reserved-element) | ||
- [Rolls back a reserved element](#rolls-back-a-reserved-element) | ||
- [Redis connections](#redis-connections) | ||
- [Reserve & (commit | rollback)](#reserve--commit--rollback) | ||
- [Working with no signallers](#working-with-no-signallers) | ||
- [Examples](#examples) | ||
- [Queue API](#queue-api) | ||
- [Get Stats](#get-stats) | ||
- [Queue name](#queue-name) | ||
- [Queue type](#queue-type) | ||
- [Queue occupation](#queue-occupation) | ||
- [Total Queue occupation](#total-queue-occupation) | ||
- [Time of schedule of next message](#time-of-schedule-of-next-message) | ||
- [Add element to queue](#add-element-to-queue) | ||
- [Get element from queue](#get-element-from-queue) | ||
- [Cancel a pending Pop](#cancel-a-pending-pop) | ||
- [Commit a reserved element](#commit-a-reserved-element) | ||
- [Rolls back a reserved element](#rolls-back-a-reserved-element) | ||
- [Redis connections](#redis-connections) | ||
- [Reserve & (commit | rollback)](#reserve-commit-rollback) | ||
- [Working with no signallers](#working-with-no-signallers) | ||
- [Examples](#examples) | ||
<!-- END doctoc generated TOC please keep comment here to allow auto update --> | ||
## About | ||
Keuss is an attempt or experiment to provide a serverless, persistent and high-available | ||
queue middleware supporting delays/schedule, using mongodb and redis to provide most of the backend | ||
needs | ||
Keuss is an attempt or experiment to provide a serverless, persistent and kigh-available queue middleware supporting delays/schedule, using mongodb and redis to provide most of the backend needs. As of now, it has evolved into a rather capable and complete queue middleware | ||
@@ -101,2 +94,3 @@ The underlying idea is that the key to provide persistency, HA and load balance is to have a storage subsystem | ||
* *redis-pubsub*: uses the pubsub subsystem provided by redis | ||
* *mongo-capped*: uses pubsub on top of a mongodb capped collection, using [mubsub](https://www.npmjs.com/package/mubsub) | ||
@@ -109,2 +103,3 @@ So far, the only events published by keuss is *element inserted in queue X*, which allows other clients waiting for elements to be available to wake up and retry. A client will not fire an event if another one of the same type (same client, same queue) was already fired less than 50ms ago | ||
* *redis*: backed by redis hashes. Modifications are buffered in memory and flushed every 100ms | ||
* *mongo*: backed by mongodb usnig one object per queue inside a singel collection. Modifications are buffered in memory and flushed every 100ms | ||
@@ -111,0 +106,0 @@ ### How all fits together |
@@ -9,2 +9,3 @@ | ||
var Redis = require ('../stats/redis'); | ||
var Mongo = require ('../stats/mongo'); | ||
@@ -253,1 +254,2 @@ var qclass = 'some-class'; | ||
run_tests_on_class (Redis); | ||
run_tests_on_class (Mongo); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
187422
42
4240
8
379
+ Addedmubsub@1.4.0
+ Addedmubsub@1.4.0(transitive)