Bean
调用、Class
类调用) bean调用:需要添加对应Bean
注解@Component
或@Service
。调用方式:ryTask.ryParams('ry')。其中ryTask(bean的名称,如@Component("ryTask")),ryParams(方法名称,' ry '带参数)。
/**
* 定时任务调度测试
*
* @author ruoyi
*/
@Component("ryTask")
public class RyTask
{
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
{
System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
}
public void ryParams(String params)
{
System.out.println("执行有参方法:" + params);
}
public void ryNoParams()
{
System.out.println("执行无参方法");
}
}
class调用:com.ruoyi.quartz.task.RyTask.ryParams('ry'),不需要加注解。com.ruoyi.quartz.task.RyTask.ryParams,全限定方法名(可带参数)。
正常情况下,定时任务里面是没有业务逻辑的。所以代码调用的话有两种方式:
第一种feign调用。因此,需要依赖于ruoyi-api-system。
第二种:就是可以依赖于别的其他的子模块。但是这种方式需要自己做拆分,比如说,ruoy-system模块依赖ruoyi-job模块后直接调用。那你就需要把ruoyi-system的service拆出来,拆出来之后,然后在ruoyi-job 的pom.xml引用,然后再去调。
我这边演示open feign的调用,因为我们ruoyi-api-system中的api都已经写好了,我们直接调就好了。
sys_job_group
配置。方便去筛选,或者控制任务。扩展:可以加上自定义分组,在sys_job_group中加。
cron
表达式介绍执行策略详解:立即执行
(所有misfire
的任务会马上执行)打个比方,如果9点misfire
了,在10:15系统恢复之后,9点,10点的misfire
会马上执行
每天9点钟去执行这个定时任务,但是某个时间段系统挂掉了,导致这个时间段定时任务没有执行成功。然后过了一个小时之后,他系统又恢复了。那么此时就会把这个定时任务马上执行一遍。就相当于你挂掉的这个任务没执行成功,我恢复了之后,马上回去执行。
执行一次
(会合并部分的misfire
,正常执行下一个周期的任务)假设9,10的任务都misfire
了,系统在10:15分起来了。只会执行一次misfire
,下次正点执行。
任务每小时去执行一次,服务器down掉了一天(24个小时)。恢复后本来要执行24次补回来的,但我不想执行这么多,我就执行一次就好了。
放弃执行
(所有的misfire
不管,执行下一个周期的任务)
系统恢复后,不做任何操作,按正常的cron继续执行就好了。
public void ryTest(String params)
{
System.out.println("类调用-参数" + params);
}
可以通过" 下次执行时间 "核对cron表达式是否正确
com.ruoyi
ruoyi-api-system
@Component("ryTask")
public class RyTask
{
@Autowired
private RemoteUserService remoteUserService;
public void ryTest(String params)
{
R loginUser = remoteUserService.getUserInfo(params, "from-source");
System.out.println("类调用-参数" + loginUser.getData().getUserid());
System.out.println("类调用-参数" + loginUser.getData().getSysUser());
}
}
@Component("ryTask")
public class RyTask
{
@Autowired
private RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class);
public void ryTest(String params)
{
R loginUser = this.remoteUserService.getUserInfo(params, "from-source");
System.out.println("类调用-参数" + loginUser.getData().getUserid());
System.out.println("类调用-参数" + loginUser.getData().getSysUser());
}
}