-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathredis_soak.js
More file actions
37 lines (32 loc) · 1.01 KB
/
redis_soak.js
File metadata and controls
37 lines (32 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var workqueue = require('../lib/workqueue'),
cluster = require('cluster');
if (cluster.isMaster) {
var producer = new workqueue.Producer({
type: "redis"
});
var queued = 0, executed = 0, errors = 0;
var schedule = function () {
console.log("queued: %d, executed: %d, errors: %d", queued, executed, errors);
console.log("queue length: %d", producer.backend.queue.length);
var jobs = Math.round(Math.random() * 1000);
for (var i = 0; i < jobs; ++i) {
producer.post('job', { test: 'hello ' + queued }, function (err) {
if (err) {
++ errors;
}
++ executed;
});
++ queued;
}
setTimeout(schedule, 1000);
}
schedule();
} else if (cluster.isWorker) {
var consumer = new workqueue.Consumer({
type: "redis"
});
consumer.registerMethod('job', function (options, callback) {
callback(null);
});
consumer.run();
}