目录
定时任务
传统的定时任务编码:如果需求改变,需要找到对应的源代码进行修改,然后重新编译、重新部署、重启服务器等才能生效,这种操作方式非常繁琐。
若依的定时任务功能:提供了友好的web界面,即不需要在源码中定制定时任务规则,通过web界面,就可以动态地管理指定类中的指定方法,在界面中定制时间规则,并且也能配置启动和关闭。
案例
每间隔五秒,控制台输出系统时间。
创建任务类
注意:任务类的位置,必须放在ruoyi-quartz模块下的task包里,并交给Spring IOC容器管理。
添加任务规则
调用方法
调用方法有两种
- 类名的首字母小写作为对象名,在点方法即可
- 包名.类名.方法名
Cron表达式
cron表达式可以点击后面的生成表达式按钮,然后弹出下面这个框,进行设置即可
执行策略
业务场景:假如现在有一个业务需求,从8点开始,每半个小时执行一次,比如8点半执行一次,9点执行一次。服务器运行的时候,在8点之前突然宕机了,在9点15分时修复了。如果选择立即执行,它会执行8点到9点之间因为宕机而没有执行的任务,之后继续执行后面的任务(9点半、10点、10点半等等)。如果选择执行一次,它会执行因为宕机而没有执行的最后一个任务,在这里指的是9点执行的任务,在此之前的任务都不会执行,之后继续执行后面的任务9点半、10点、10点半等等)。如果选择放弃执行,则宕机期间未执行的任务,都不会执行,而是直接执行后面的任务9点半、10点、10点半等等)。
一般情况下,我们选择放弃执行即可,也就是之前没有执行的不管,直接执行最新的任务。
并发
假如现在有两个任务:A和B。这两个任务的时间规则刚好一样,如果允许并发执行,效率会提升,一般情况下,是允许并发的。但特殊的场景:关闭订单做退款,这两个任务是先关闭订单再做退款,即先执行A再执行B,如果允许并发执行,万一A失败了,B却执行了,即订单没关,钱却退了,这显然不合理,直接让客户白嫖了,所以针对这个特殊的场景,应该关闭并发执行。
启动任务
调试按钮
点击这个按钮,任务可以直接执行一次,一般用于测试,看看任务执行效果。