Node.js 处理任务调(定时任务)

const Agenda = require('agenda');
const Agenda = require('agenda');

const agenda = new Agenda({
    db: {
         address: 'mongodb://<username>:<password>@<host>:<port>/<database>',
    },
    options: {
        useNewUrlParser: true,
        useUnifiedTopology: true
    }
});

agenda.define('printTime', (job, done) => {
    const date = new Date();
    console.log(`Current time: ${date}`);
    done();
});

agenda.on('ready', () => {
    agenda.every('1 minute', 'printTime');
    agenda.start();
});

这是一个存储在Agenda库中的任务对象的示例。它包含了以下信息:

  1. _id: 该任务在MongoDB中的唯一ID
  2. name: 任务的名称
  3. type: 任务的类型,可以是 "single"(一次性任务)或 "recurring"(重复性任务)
  4. data: 任务的数据,可以是任何JavaScript对象
  5. endDate: 任务的结束日期
  6. lastModifiedBy: 最后修改任务的用户
  7. nextRunAt: 下一次运行任务的时间,以Date对象的形式表示
  8. priority: 任务的优先级
  9. repeatInterval: 任务重复运行的时间间隔
  10. repeatTimezone: 任务重复运行的时区
  11. shouldSaveResult: 是否应该保存任务结果
  12. skipDays: 跳过任务的日期
  13. startDate: 任务的开始日期
  14. lockedAt: 任务锁定的时间
  15. lastRunAt: 任务上一次运行的时间,以Date对象的形式表示
  16. lastFinishedAt: 任务上一次完成的时间,以Date对象的形式表示

Agenda库的作用是在后台运行这些任务。它会定期检查任务的下一次运行时间,并在该时间到达时运行任务。对于重复性任务,Agenda库会自动计算下一次运行时间,并在到达时运行任务,从而实现任务的定期重复运行。通过存储这些任务对象,Agenda库可以跟踪任务的状态、下一次运行时间以及其他相关信息,并确保它们按照预期执行。