0

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

0 回答 0