Agenda笔记
Agenda是类似Quarzt的轻量级持久化任务调度框架, 数据存储再mongodb上, 部署与学习十分简单.
第三方开发者还为Agenda提供了一个简易的UI界面 Agenda UI. 提供简单的可视化界面.
Base
Agenda 将任务对象保存再mongo里面, 任务对象包含任务的name, 附带数据, 定时规则等.
我们可以动态对任务进行CRUD操作. Agenda提供对应API.
虽然Agenda本身提供的对Job的操作比较简单, 但因为Agenda的Job都是存储再mongo之中,所以我们可以通过直接操作monogo实现的Job的更新与删除.
Start
简单的添加任务操作:
1 | var job = agenda.create('testJob', {key: "value"}); |
程序开始时,我们需要创建agenda对象,指定事件响应函数,并开始执行任务调用.
1 | var agenda = new Agenda({db: { address: 'localhost:27017/agenda-example'}); |
数据存储
Agenda使用mongodb。
1 | // 指定使用的mongodb,默认使用agendaJobs集合 |
指定循环规制
1 | // 直接构造的agenda对象的时候指定 |
指定任务最大并发数
1 | // 构造时指定 |
指定默认并发数
1 | // 构造时指定 |
设置任务最大响应时间
指定任务从开始执行到调用finish的时间(指调用done函数),这能有效的解决任务奔溃或者超时
1 | // 构造时指定 |
定义任务处理器
定义任务行为
当执行的任务为异步方法的时候,需要再方法最后调用done()
如果为同步方法,则省略声明done
影响任务行为的参数:
- concurrency 指定最大任务并发数
- lockLifetime 锁生存时间,指定异步调用时最长等待时间
- priority 优先级(lowest|low|normal|high|highest|number)
1 | // 执行任务为异步方法 |
定时任务
指定任务重复的规制,支持数字, cron表达式, 甚至如10 minutes等可读性较高的表达式
1 | job.repeatEvery('10 minutes'); |
指定特定的重复时间
1 | // 每天15:30 |
指定只执行一次的的任务
1 | job.schedule('3:30pm'); |
now
马上执行某事件
1 | agenda.now('do the hokey pokey'); |