2015-12-29 17:19:10 +08:00
|
|
|
'use strict';
|
|
|
|
|
2016-06-30 00:29:53 +08:00
|
|
|
function JobQueue(metadataBackend, jobPublisher) {
|
2015-12-29 17:19:10 +08:00
|
|
|
this.metadataBackend = metadataBackend;
|
2016-06-30 00:29:53 +08:00
|
|
|
this.jobPublisher = jobPublisher;
|
2015-12-29 17:19:10 +08:00
|
|
|
this.db = 5;
|
2015-12-31 03:16:18 +08:00
|
|
|
this.redisPrefix = 'batch:queues:';
|
2015-12-29 17:19:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
JobQueue.prototype.enqueue = function (job_id, host, callback) {
|
2016-06-30 00:29:53 +08:00
|
|
|
var self = this;
|
|
|
|
|
|
|
|
this.metadataBackend.redisCmd(this.db, 'LPUSH', [ this.redisPrefix + host, job_id ], function (err) {
|
|
|
|
if (err) {
|
|
|
|
return callback(err);
|
|
|
|
}
|
|
|
|
|
|
|
|
self.jobPublisher.publish(host);
|
|
|
|
callback();
|
|
|
|
});
|
2015-12-29 17:19:10 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
JobQueue.prototype.dequeue = function (host, callback) {
|
2015-12-31 03:16:18 +08:00
|
|
|
this.metadataBackend.redisCmd(this.db, 'RPOP', [ this.redisPrefix + host ], callback);
|
2015-12-29 17:19:10 +08:00
|
|
|
};
|
|
|
|
|
2016-01-13 23:25:25 +08:00
|
|
|
JobQueue.prototype.enqueueFirst = function (job_id, host, callback) {
|
|
|
|
this.metadataBackend.redisCmd(this.db, 'RPUSH', [ this.redisPrefix + host, job_id ], callback);
|
|
|
|
};
|
|
|
|
|
2015-12-29 17:19:10 +08:00
|
|
|
module.exports = JobQueue;
|