SpringCloud+quartz计时提醒系统之前通过Springboot做了一个计时查询系统。前几天通过SpringCloud写了一个升级版。功能与上一个类似。我们现在来看看。首先,你需要关注我的测试账号。本系统经第三方授权,可通过微信测试号登录。扫描下方二维码关注关注,进入我的测试账号。点击定时提醒进入本系统。既然你用的是SpringCloud,那你一定要确定。需要将一个项目分成几个模块来运行。我还是学生,云服务器只有一台,所以我把这四个模块放在了同一台服务器上。别怪我~系统分为EurekaServer服务注册中心Quartz定时提醒服务用户、消费者服务、微信测试账号、第三方授权和模板消息服务四个模块。注意:本系统没有使用zuul网关EurekaServer,我就不说了,简单配置一下就可以直接使用。quartz定时提醒需要quartz这个第三方库org.quartz-schedulerquartz2.3.0此外,还需要一些spring依赖。Quartz有简单任务触发器和复杂任务触发器。本系统使用cron复杂任务触发器来自定义任务调度。写一个Job接口实现类,实现里面的execute方法。触发任务时执行此方法。,在方法中写上你要执行的内容。配置调度器后,在项目启动时创建一个bean@Configuration公共类QuartzConfigration。{/***注意:*细节:定义石英调度工厂*/@Bean(name="scheduler")publicSc??hedulerFactoryBeanschedulerFactory(){SchedulerFactoryBeanbean=newSchedulerFactoryBean();//对于quartz集群,QuartzScheduler更新现有的Jobbean.setOverwriteExistingJobs(true);//延迟启动,应用程序启动后1秒//bean.setStartupDelay(5);//注册触发器//bean.setTriggers(jobTrigger);返回豆;}}创建一个任务(截取修改部分自己写的工具类),可以自己写一个工具类,后面调用。Stringevent=(String)map.get("eventId");Stringdate=(String)map.get("日期");JobDataMapjobDataMap=newJobDataMap();jobDataMap.put("eventId",event);//将参数传入Job类jobDataMap.put("date",date);JobDetailjobDetail=JobBuilder.newJob(MyBean.class).withIdentity(key,"group1").usingJobData(jobDataMap).build();CronTriggercronTrigger=TriggerBuilder.newTrigger().withIdentity(key,"group1").withSchedule(CronScheduleBuilder.cronSchedule(cron)).build();SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");log.info("事件创建成功,执行时间为:{}",format.format(scheduler.scheduleJob(jobDetail,cronTrigger)));如果要修改创建时间,需要这样写TriggerKeytriggerKey=newTriggerKey(eventId,"group1");CronTriggerImplcronTrigger=(CronTriggerImpl)scheduler.getTrigger(triggerKey);定时触发ger.setCronExpression(cron);scheduler.rescheduleJob(triggerKey,cronTrigger);Service不能注入Job实现类,所以可以这样ConfigurableApplicationContextrun=SpringApplication.run(SpringcloudQuartzApplication.class,args);EventServiceeventService=run.getBean(EventService.class);MyBean.eventService=事件服务;这是石英模块的介绍接下来是用户消费者模块,调用quartz服务,通过Feign调用。比较棘手的是Feign的方法参数只能传一个对象参数和多个参数,不能同时传两个对象参数,而且传对象参数也需要在@PostMapping("/update")public前面注解ResultVOupdate(@RequestBody(required=false)EventFormeventForm,@RequestParam(name="id")Stringid);Feign负载均衡默认使用Ribbon(虽然本系统没有集群~)微信第三方授权和发送模板消息就不多说了,直接用第三方库写com.github.binarywangweixin-java-mp2.8.0微信第三方授权的github也贴出来了,可以去自己看API,点这里进入github项目效果演示,介绍就这些啦~有问题可以给我发邮件13427434344@163.com