摘要:定时提醒系统之前通过做了一个定时查询系统,前几天通过编写了个升级版,功能和之前的差不多,现在来看看吧。将参数传递到类中创建事件成功,执行时间为创建时间后想要修改的话就需要这么写在实现类里面注入不了那么可以这么做这个就是模块的部分介绍了。
SpringCloud+quartz 定时提醒系统
之前通过Springboot做了一个定时查询系统,前几天通过SpringCloud编写了个升级版,功能和之前的差不多,现在来看看吧。
首先需要先关注我的测试号啦,本系统通过微信测试号第三方授权登录,扫描下方二维码即可关注
关注之后进入我的测试号点击定时提醒则进入本系统
既然是使用SpringCloud,那么肯定是要把一个项目分为几个模块来运行啦
本人还是学生,云服务器只有一台,所以就把这四个模块放在同一台服务器了,勿怪勿怪~
系统分为四个模块
Eureka Server 服务注册中心
quartz定时提醒服务
用户消费者服务
微信测试号第三方授权以及发送模板消息服务
注:本系统没有运用zuul网关
Eureka Server我就不说了,简单的配置一下就可以直接运用了。
quartz定时提醒呢,就需要quartz这个第三方的库
org.quartz-scheduler quartz 2.3.0
而且还需要一些spring的依赖
quartz有简单任务触发和复杂任务触发,本系统使用的是cron复杂任务触发器定制任务调度
编写一个Job接口实现类
实现里面的execute方法,该方法是在任务触发时执行,在方法里面写上你要执行的东西。
之后配置scheduler,项目启动的时候创建bean
@Configuration public class QuartzConfigration { /** * attention: * Details:定义quartz调度工厂 */ @Bean(name = "scheduler") public SchedulerFactoryBean schedulerFactory() { SchedulerFactoryBean bean = new SchedulerFactoryBean(); // 用于quartz集群,QuartzScheduler 启动时更新己存在的Job bean.setOverwriteExistingJobs(true); // 延时启动,应用启动1秒后 // bean.setStartupDelay(5); // 注册触发器 // bean.setTriggers(jobTrigger); return bean; } }
创建任务(截取自己写的工具类中的部分内容并加以修改),可以自己写个工具类,以后方便自己调用。
String event= (String) map.get("eventId"); String date= (String) map.get("date"); JobDataMap jobDataMap=new JobDataMap(); jobDataMap.put("eventId",event); //将参数传递到Job类中 jobDataMap.put("date",date); JobDetail jobDetail= JobBuilder .newJob(MyBean.class) .withIdentity(key,"group1") .usingJobData(jobDataMap) .build(); CronTrigger cronTrigger = TriggerBuilder.newTrigger() .withIdentity(key, "group1") .withSchedule(CronScheduleBuilder.cronSchedule(cron)) .build(); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); log.info("创建事件成功,执行时间为:{}",format.format(scheduler.scheduleJob(jobDetail,cronTrigger)));
创建时间后想要修改的话就需要这么写
TriggerKey triggerKey=new TriggerKey(eventId,"group1"); CronTriggerImpl cronTrigger= (CronTriggerImpl) scheduler.getTrigger(triggerKey); cronTrigger.setCronExpression(cron); scheduler.rescheduleJob(triggerKey,cronTrigger);
在Job实现类里面注入不了Service,那么可以这么做
ConfigurableApplicationContext run = SpringApplication.run(SpringcloudQuartzApplication.class, args); EventService eventService = run.getBean(EventService.class); MyBean.eventService=eventService;
这个就是quartz模块的部分介绍了。
接下来是用户消费者模块,调用quartz的服务,通过Feign进行调用,比较坑的事情是,Feign的方法参数,只能传递一个对象参数和多个参数,不能同时传递两个对象参数,而且传递对象参数还需要在前面加上注解
@PostMapping("/update") public ResultVO update(@RequestBody(required = false)EventForm eventForm, @RequestParam(name = "id") String id);
Feign中默认使用Ribbon进行负载均衡(虽然本系统没有集群~)
微信第三方授权和发送模板消息就不多说了,就是使用第三方的库进行编写
com.github.binarywang weixin-java-mp 2.8.0
微信第三方授权的github也贴出来,可以自行去看API,点击这里进入github
项目效果演示
好了,介绍就到这里啦~
有什么问题就发我邮箱提问吧
13427434344@163.com
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/112822.html
摘要:定时提醒系统之前通过做了一个定时查询系统,前几天通过编写了个升级版,功能和之前的差不多,现在来看看吧。将参数传递到类中创建事件成功,执行时间为创建时间后想要修改的话就需要这么写在实现类里面注入不了那么可以这么做这个就是模块的部分介绍了。 SpringCloud+quartz 定时提醒系统 之前通过Springboot做了一个定时查询系统,前几天通过SpringCloud编写了个升级版,...
摘要:定时提醒系统之前通过做了一个定时查询系统,前几天通过编写了个升级版,功能和之前的差不多,现在来看看吧。将参数传递到类中创建事件成功,执行时间为创建时间后想要修改的话就需要这么写在实现类里面注入不了那么可以这么做这个就是模块的部分介绍了。 SpringCloud+quartz 定时提醒系统 之前通过Springboot做了一个定时查询系统,前几天通过SpringCloud编写了个升级版,...
摘要:定时提醒系统之前通过做了一个定时查询系统,前几天通过编写了个升级版,功能和之前的差不多,现在来看看吧。将参数传递到类中创建事件成功,执行时间为创建时间后想要修改的话就需要这么写在实现类里面注入不了那么可以这么做这个就是模块的部分介绍了。 SpringCloud+quartz 定时提醒系统 之前通过Springboot做了一个定时查询系统,前几天通过SpringCloud编写了个升级版,...
摘要:添加任务成功运行任务名称添加定时任务服务定时任务服务。触发器计划列表添加测试任务类测试任务类被任务调度后执行该任务类。声明一个静态变量保存添加启动类简单微服务,不支持分布式。 SpringCloud(第 009 篇)简单 Quartz 微服务,不支持分布式 - 一、大致介绍 1、本章节仅仅只是为了测试 Quartz 在微服务中的使用情况; 2、其实若只是简单的实现任务调用而言的话,Sp...
摘要:加载配置文件失败加载配置文件失败添加定时调度任务定时调度任务添加定时调度任务定时调度任务执行的张表入数据库添加启动类简单微服务,采用注解配置分布式集群。 SpringCloud(第 054 篇)简单 Quartz-Cluster 微服务,采用注解配置 Quartz 分布式集群 - 一、大致介绍 1、因网友提到有没有采用注解式配置的Quartz例子,因此本人就贴上了这样一个样例; 2、至...
阅读 2040·2021-11-23 09:51
阅读 2183·2021-09-29 09:34
阅读 3643·2021-09-22 15:50
阅读 3493·2021-09-22 15:23
阅读 2482·2019-08-30 15:55
阅读 676·2019-08-30 15:53
阅读 3042·2019-08-29 17:09
阅读 2596·2019-08-29 13:57