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库中的任务对象的示例。它包含了以下信息:
- _id: 该任务在MongoDB中的唯一ID
- name: 任务的名称
- type: 任务的类型,可以是 "single"(一次性任务)或 "recurring"(重复性任务)
- data: 任务的数据,可以是任何JavaScript对象
- endDate: 任务的结束日期
- lastModifiedBy: 最后修改任务的用户
- nextRunAt: 下一次运行任务的时间,以Date对象的形式表示
- priority: 任务的优先级
- repeatInterval: 任务重复运行的时间间隔
- repeatTimezone: 任务重复运行的时区
- shouldSaveResult: 是否应该保存任务结果
- skipDays: 跳过任务的日期
- startDate: 任务的开始日期
- lockedAt: 任务锁定的时间
- lastRunAt: 任务上一次运行的时间,以Date对象的形式表示
- lastFinishedAt: 任务上一次完成的时间,以Date对象的形式表示
Agenda库的作用是在后台运行这些任务。它会定期检查任务的下一次运行时间,并在该时间到达时运行任务。对于重复性任务,Agenda库会自动计算下一次运行时间,并在到达时运行任务,从而实现任务的定期重复运行。通过存储这些任务对象,Agenda库可以跟踪任务的状态、下一次运行时间以及其他相关信息,并确保它们按照预期执行。