SpringBoot+JPA 定时器(定时触发某任务)
2020-06-05 06:01
295 查看
这里写的是用定时器触发数据库轮训的任务;
首先在Repo层中自定义了一个按条件查询的语句(这里查询的是电话号码,将符合条件的电话号码从表中查出来形成一个列表。注意:由于没有查全部数据,所以List<>中不能是整个表的名字,应该是List.否则编译时会报无法查出未查询数据的错误)
repo层:
@Query(value="SELECT phone_number FROM descioline_info " + "WHERE (`send_himself_status`=1&&(DATEDIFF(`send_himself_expiry_date`,NOW())<=5))" + "||(`send_organization_status`= 1&&(DATEDIFF(`send_organization_expiry_date`,NOW())<=5))" + "||(`send_personnel_status`=1&&(DATEDIFF(`send_personnel_expiry_date`,NOW())<=5))",nativeQuery = true) List<Object> sendMessageJob2();
在Service层中调用repo层中自定义的这个方法。
public List<Object> sendMessageJob2() { return desciolineInfoRepo.sendMessageJob(); }
定义定时器的方法,这里设置的是每50秒自动执行一次,便于测试。
@Configuration @EnableScheduling public class SelectnumberJob { @Autowired private DesciolineInfoService desciolineInfoService; @Autowired private SmsCommon smsCommon; //0 0 12 * * ? 每天中午12点触发 @Scheduled(cron = "0/50 * * * * ?")//每50秒触发一次 private void configureTasks() { // System.err.println("执行静态定时任务时间: " + LocalDateTime.now());测试是否每50秒进行重复 // 查询手机号 //实例化查询出来的电话列表 List<Object> phonenums = desciolineInfoService.sendMessageJob2(); if (!CollectionUtils.isEmpty(phonenums)){//如果查出来的电话号码不为空。CollectionUtils是一个工具类,它可以使代码更加简洁和安全。 List<String> ps = phonenums.stream().map(x -> "+86"+x.toString()).collect(Collectors.toList()); //JAVA8 API添加了一个新的抽象称为流stream。将要处理的元素集合看作一种流 //流在管道中传输,并且可以在管道的节点 上进行处理,如筛选,排序,聚合等 //这里就是将提取出来的电话号码每一个前面加上“+86”然后用collect处理 String[] pa = {}; SimpleResponse res = smsCommon.sendMsg(ps.toArray(new String[ps.size()]),pa); //这里smsCommon是发短信的方法 if (res.getCode().equals(200)){//当Integer>128时,使用.equals SimpleResponse simpleResponse= new SimpleResponse(); simpleResponse.msg = "发送成功"; }else { SimpleResponse simpleResponse= new SimpleResponse(); simpleResponse.msg = "发送失败"; } } } }
相关文章推荐
- Spring.Scheduling.Quartz 作业的应用(定时任务和循环触发任务)
- Spring 解决Quartz定时任务被触发两次的问题
- 关于Java Web 使用Spring中使用Quartz(定时调用、实现固定时间执行), 触发定时器(执行某些任务)的实例
- spring自触发定时任务
- 关于Spring+quartz定时任务时触发2次的问题
- Spring定时任务的几种实现
- spring cron 定时任务
- Spring 3整合Quartz 2实现定时任务
- Spring定时任务quartz表达式
- spring3.2 @Scheduled注解 定时任务
- spring quartz 注解配置定时任务
- spring 使用注解来调度定时任务
- Spring Boot中使用@Scheduled创建定时任务
- java 定时任务 (timer和timetask,quartz,spring,LinuxCron)
- 解决Quartz定时任务被触发两次的问题(附带:Quartz的测试用例)
- Spring Boot+Quartz实现一个实时管理的定时任务
- spring 定时任务的 执行时间设置规则(转)
- Spring4.0.6 +Quartz 2.2.1动态添加、修改、删除、关闭定时任务
- 解决spring定时任务执行两次和tomcat部署缓慢的问题
- Spring集成Quartz定时任务框架介绍