我需要一个在特定时间间隔内运行几个作业的作业调度程序。所以,我使用议程模块来完成这项任务。发生的情况是,当服务器重新启动时,作业会被执行,并且这种情况会定期发生 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);
});
});
};