1. 任务调度
1.1. 技术设计
mid_task 用于存放需要进行任务调度的service,其中标字段如下:
列名 | 描述 | 样例数据 |
---|---|---|
id | 主键 | 1 |
bean_name | 类名 | SampleArtemisDepartmentInputService |
method | 方法名 | doArtemisDataInput |
start_time | 执行时间 | 2017-03-31 21:59:30 |
rule | 定时表达式 | 0 0 22 ? * |
companyid | 公司ID | |
is_active | 运行状态 | false |
remark | 备注 | 部门同步任务 |
作用: 提供标准版的定时模板程序,定任务通过配置在db中,只需要实现自己的业务方法即可。
关于cron表达式:
0 2 * * 6 *
* * * * * * *
- - - - - - -
| | | | | | |
| | | | | | +年[可选](1970-2099)
| | | | | + 天(周) 1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
| | | | +----- 月(0 - 11)
| | | +---------- 天(月) (1 - 31)
| | +--------------- 小时(0 - 23)
| +-------------------- 分 (0 - 59)
+------------------------- 秒(0 - 59)
其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?.
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
1.2. 主要功能
执行同步任务
能够按照配置自动执行同步任务,任务的主要参数是起止时间
失败任务重试
当发生网络异常或者服务器故障,导致汇联易或者下游服务不可用时,可通过捕获异常的方式判定任务失败,失败的任务会进入失败任务列表,并会自动发起重试。当达到最大重试次数时(可自定义),重试终止。
业务失败重试
业务失败可定义为在当前运行任务中,存在一定数量由于数据问题导致同步不能正常完成,此种任务可能由于汇联易或者下游系统数据维护不及时或同步任务存在依赖关系导致的问题。不同于任务失败需要整批任务发起重试,业务失败需要对失败的接口数据进行重试。该部分数据会由模板程序记录,调度器自动发起重试。与任务重试相同,可自定义最大重试次数,达到最大重试此处则不再重试。可通过管理界面手工处理重试。
失败业务报障
对于达到最大重试次数的业务失败,调度器会将这些信息通过电子邮件发送给管理员。同一个失败业务只会发送一封邮件。
失败任务清理
对于一定历史时间内发生的重试任务列表数据和业务失败进行清理,防止遗留大量无效数据
2. 任务使用说明
定时配置说明
1.编写定时所执行业务类
例如:
public class ArtemisImportService {
public void importReport(String startTime,String endTime){
.......do something......
}
}
2.在mid_task表配置此定时任务(配置说明详看自动调度器)
定时任务即可配置完毕
定时任务异常说明
定时任务抛出普通异常,定时任务结束,不会更新最后一次成功时间,下次执行时间为:最后一次成功时间-->当前执行时间-30S
定时任务抛出TaskCompensationException异常,定时任务结束,更新最后一次成功时间为当前时间-30S,下次执行时间为:最后一次成功时间-->当前执行时间-30S
页面定时任务管理说明
登录地址http://localhost:port/task,页面有个三个按钮
定时任务列表用来查看当前配置的定时任务
1.编辑按钮,用来修改定时表达式等
2.启用/停用按钮,用来启用或者停用定时任务
3.执行按钮,用来立即执行此定时任务
失败重试列表,用来查看执行失败的定时任务
4.重试按钮,用来重试失败超时设置失败次数的定时任务