我需要一个在特定时间间隔内运行几个作业的作业调度程序。所以,我使用议程模块来完成这项任务。发生的情况是,当服务器重新启动时,作业将被执行,并且这会以固定间隔为基础发生4次,并且在该议程停止工作后不会抛出任何错误。我试图在服务器停止时取消作业并停止议程。因此,每次重新启动服务器时,agendaJobs都会创建新的集合。但是,我仍然遇到同样的问题。因为我运行了多个节点实例,所以我需要在该时间间隔内仅运行一次作业。因此,我使用了议程。是否有任何不同的调度程序可以做同样的事情或我做错了什么?
var agenda = new Agenda({db: {address: mongoConnectionString}});
var startCron = function(server, callback){
agenda.define('job1', function(job, done) {
job1.execute();
});
agenda.define('job2', function(job, done) {
job2.execute();
});
agenda.define('job3', function(job, done) {
job3.execute();
});
agenda.on('ready', function() {
agenda.every('10 minutes', ['job1', 'job2',
'job3']);
agenda.start();
console.log("Cron job setup completed.");
callback(null, server);
});
}
//这是我的杀戮过程
var killProcess = function() {
try {
mongoose.disconnect();
console.log(arguments);
console.log("Connection got closed.");
} catch (e) {
console.log(e);
}
agenda.cancel({}, function(err, numRem){
console.log("Cancelling Agenda Jobs", err, numRem);
agenda.stop(function() {
console.log("Stopping Agenda")
setTimeout(function(){
process.exit(1);
}, 2000);
});
});
};