[Node] Agenda 中文文档 定时任务调度系统[基础篇]

本文档介绍了Agenda——一个Node.js定时任务管理模块,它利用mongoDB存储任务。主要内容包括初始化、任务定义、任务配置和事件监听。初始化涉及数据库连接和配置选项,任务定义时需指定任务名称和参数,任务配置可以设置执行间隔和优先级。在事件监听中,'ready'事件用于启动任务。注意事项包含时区设置和避免重复任务存储。
摘要由CSDN通过智能技术生成

Agenda简介

Agenda是一个定时任务管理模块,它将node中的定时任务存储在数据库中(官方文档推荐使用mongoDB),通过事件回调与监听实现定时任务调度。

使用步骤概述

总的来说分4步:

  • 初始化(new Agenda(..))
  • 定义任务(agenda.define(..))
  • 配置任务(agenda.every(..))
  • 最后设置事件监听(agenda.on(..)
const Agenda = require('agenda')
const connection_options = {
  db: {
    address: 'mongodb://127.0.0.1:27017/agenda',
    collection: 'agendaJobs',
    options: { server: { auto_reconnect: true } },
  },
}
// 初始化agenda
let agenda = new Agenda(connection_options)
agenda
  .name('AGENDA TEST - ' + process.pid)
  .defaultConcurrency(5)
  .defaultLockLifetime(10000)
// 定义任务
agenda.define('updateCampaignTimeout', { priority: 'high', concurrency: 3 }, (job, done) => {
  dbp_job.updateCampaignTimeoutTick()
    .then(() => done())
    .catch((error) => { throw error })
})
// 配置任务(需要在ready事件中完成)
agenda.on('ready', () => {
  agenda.every('00 09 18 * * *', 'updateCampaignTimeout', {}, {timezone: 'Asia/Shanghai'})
  console.log('agenda测试开始,启动完毕')
  agenda.start()
})
// 设置监听
agenda.on('start', (job) => {
  console.log('检测到job启动: ', job.attrs.name)
})

agenda.on('complete', (job) => {
  console.log('检测到job完成: ', job.attrs.name)
})

agenda.on('success', (job) => {
  console.log('检测到job成功: ', job.attrs.name)
})

agenda.on('fail', (job) => {
  console.log('检测到job失败: ', job.attrs.name)
  console.log('失败时间: ', job.attrs.failedAt)
  console.log('失败原因: ', job.attrs.failReason)
  agenda.stop()
})
// 最后,优雅的退出方案
function graceful() {
   
  agenda.stop(() => {
    console.log('检测到退出')
    process.exit(0);
  });
}

process.on(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值