摘要:定時(shí)提醒系統(tǒng)之前通過(guò)做了一個(gè)定時(shí)查詢系統(tǒng),前幾天通過(guò)編寫(xiě)了個(gè)升級(jí)版,功能和之前的差不多,現(xiàn)在來(lái)看看吧。將參數(shù)傳遞到類中創(chuàng)建事件成功,執(zhí)行時(shí)間為創(chuàng)建時(shí)間后想要修改的話就需要這么寫(xiě)在實(shí)現(xiàn)類里面注入不了那么可以這么做這個(gè)就是模塊的部分介紹了。
SpringCloud+quartz 定時(shí)提醒系統(tǒng)
之前通過(guò)Springboot做了一個(gè)定時(shí)查詢系統(tǒng),前幾天通過(guò)SpringCloud編寫(xiě)了個(gè)升級(jí)版,功能和之前的差不多,現(xiàn)在來(lái)看看吧。
首先需要先關(guān)注我的測(cè)試號(hào)啦,本系統(tǒng)通過(guò)微信測(cè)試號(hào)第三方授權(quán)登錄,掃描下方二維碼即可關(guān)注
關(guān)注之后進(jìn)入我的測(cè)試號(hào)點(diǎn)擊定時(shí)提醒則進(jìn)入本系統(tǒng)
既然是使用SpringCloud,那么肯定是要把一個(gè)項(xiàng)目分為幾個(gè)模塊來(lái)運(yùn)行啦
本人還是學(xué)生,云服務(wù)器只有一臺(tái),所以就把這四個(gè)模塊放在同一臺(tái)服務(wù)器了,勿怪勿怪~
系統(tǒng)分為四個(gè)模塊
Eureka Server 服務(wù)注冊(cè)中心
quartz定時(shí)提醒服務(wù)
用戶消費(fèi)者服務(wù)
微信測(cè)試號(hào)第三方授權(quán)以及發(fā)送模板消息服務(wù)
注:本系統(tǒng)沒(méi)有運(yùn)用zuul網(wǎng)關(guān)
Eureka Server我就不說(shuō)了,簡(jiǎn)單的配置一下就可以直接運(yùn)用了。
quartz定時(shí)提醒呢,就需要quartz這個(gè)第三方的庫(kù)
org.quartz-scheduler quartz 2.3.0
而且還需要一些spring的依賴
quartz有簡(jiǎn)單任務(wù)觸發(fā)和復(fù)雜任務(wù)觸發(fā),本系統(tǒng)使用的是cron復(fù)雜任務(wù)觸發(fā)器定制任務(wù)調(diào)度
編寫(xiě)一個(gè)Job接口實(shí)現(xiàn)類
實(shí)現(xiàn)里面的execute方法,該方法是在任務(wù)觸發(fā)時(shí)執(zhí)行,在方法里面寫(xiě)上你要執(zhí)行的東西。
之后配置scheduler,項(xiàng)目啟動(dòng)的時(shí)候創(chuàng)建bean
@Configuration public class QuartzConfigration { /** * attention: * Details:定義quartz調(diào)度工廠 */ @Bean(name = "scheduler") public SchedulerFactoryBean schedulerFactory() { SchedulerFactoryBean bean = new SchedulerFactoryBean(); // 用于quartz集群,QuartzScheduler 啟動(dòng)時(shí)更新己存在的Job bean.setOverwriteExistingJobs(true); // 延時(shí)啟動(dòng),應(yīng)用啟動(dòng)1秒后 // bean.setStartupDelay(5); // 注冊(cè)觸發(fā)器 // bean.setTriggers(jobTrigger); return bean; } }
創(chuàng)建任務(wù)(截取自己寫(xiě)的工具類中的部分內(nèi)容并加以修改),可以自己寫(xiě)個(gè)工具類,以后方便自己調(diào)用。
String event= (String) map.get("eventId"); String date= (String) map.get("date"); JobDataMap jobDataMap=new JobDataMap(); jobDataMap.put("eventId",event); //將參數(shù)傳遞到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("創(chuàng)建事件成功,執(zhí)行時(shí)間為:{}",format.format(scheduler.scheduleJob(jobDetail,cronTrigger)));
創(chuàng)建時(shí)間后想要修改的話就需要這么寫(xiě)
TriggerKey triggerKey=new TriggerKey(eventId,"group1"); CronTriggerImpl cronTrigger= (CronTriggerImpl) scheduler.getTrigger(triggerKey); cronTrigger.setCronExpression(cron); scheduler.rescheduleJob(triggerKey,cronTrigger);
在Job實(shí)現(xiàn)類里面注入不了Service,那么可以這么做
ConfigurableApplicationContext run = SpringApplication.run(SpringcloudQuartzApplication.class, args); EventService eventService = run.getBean(EventService.class); MyBean.eventService=eventService;
這個(gè)就是quartz模塊的部分介紹了。
接下來(lái)是用戶消費(fèi)者模塊,調(diào)用quartz的服務(wù),通過(guò)Feign進(jìn)行調(diào)用,比較坑的事情是,F(xiàn)eign的方法參數(shù),只能傳遞一個(gè)對(duì)象參數(shù)和多個(gè)參數(shù),不能同時(shí)傳遞兩個(gè)對(duì)象參數(shù),而且傳遞對(duì)象參數(shù)還需要在前面加上注解
@PostMapping("/update") public ResultVO update(@RequestBody(required = false)EventForm eventForm, @RequestParam(name = "id") String id);
Feign中默認(rèn)使用Ribbon進(jìn)行負(fù)載均衡(雖然本系統(tǒng)沒(méi)有集群~)
微信第三方授權(quán)和發(fā)送模板消息就不多說(shuō)了,就是使用第三方的庫(kù)進(jìn)行編寫(xiě)
com.github.binarywang weixin-java-mp 2.8.0
微信第三方授權(quán)的github也貼出來(lái),可以自行去看API,點(diǎn)擊這里進(jìn)入github
項(xiàng)目效果演示
好了,介紹就到這里啦~
有什么問(wèn)題就發(fā)我郵箱提問(wèn)吧
13427434344@163.com
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/112822.html
摘要:定時(shí)提醒系統(tǒng)之前通過(guò)做了一個(gè)定時(shí)查詢系統(tǒng),前幾天通過(guò)編寫(xiě)了個(gè)升級(jí)版,功能和之前的差不多,現(xiàn)在來(lái)看看吧。將參數(shù)傳遞到類中創(chuàng)建事件成功,執(zhí)行時(shí)間為創(chuàng)建時(shí)間后想要修改的話就需要這么寫(xiě)在實(shí)現(xiàn)類里面注入不了那么可以這么做這個(gè)就是模塊的部分介紹了。 SpringCloud+quartz 定時(shí)提醒系統(tǒng) 之前通過(guò)Springboot做了一個(gè)定時(shí)查詢系統(tǒng),前幾天通過(guò)SpringCloud編寫(xiě)了個(gè)升級(jí)版,...
摘要:定時(shí)提醒系統(tǒng)之前通過(guò)做了一個(gè)定時(shí)查詢系統(tǒng),前幾天通過(guò)編寫(xiě)了個(gè)升級(jí)版,功能和之前的差不多,現(xiàn)在來(lái)看看吧。將參數(shù)傳遞到類中創(chuàng)建事件成功,執(zhí)行時(shí)間為創(chuàng)建時(shí)間后想要修改的話就需要這么寫(xiě)在實(shí)現(xiàn)類里面注入不了那么可以這么做這個(gè)就是模塊的部分介紹了。 SpringCloud+quartz 定時(shí)提醒系統(tǒng) 之前通過(guò)Springboot做了一個(gè)定時(shí)查詢系統(tǒng),前幾天通過(guò)SpringCloud編寫(xiě)了個(gè)升級(jí)版,...
摘要:定時(shí)提醒系統(tǒng)之前通過(guò)做了一個(gè)定時(shí)查詢系統(tǒng),前幾天通過(guò)編寫(xiě)了個(gè)升級(jí)版,功能和之前的差不多,現(xiàn)在來(lái)看看吧。將參數(shù)傳遞到類中創(chuàng)建事件成功,執(zhí)行時(shí)間為創(chuàng)建時(shí)間后想要修改的話就需要這么寫(xiě)在實(shí)現(xiàn)類里面注入不了那么可以這么做這個(gè)就是模塊的部分介紹了。 SpringCloud+quartz 定時(shí)提醒系統(tǒng) 之前通過(guò)Springboot做了一個(gè)定時(shí)查詢系統(tǒng),前幾天通過(guò)SpringCloud編寫(xiě)了個(gè)升級(jí)版,...
摘要:添加任務(wù)成功運(yùn)行任務(wù)名稱添加定時(shí)任務(wù)服務(wù)定時(shí)任務(wù)服務(wù)。觸發(fā)器計(jì)劃列表添加測(cè)試任務(wù)類測(cè)試任務(wù)類被任務(wù)調(diào)度后執(zhí)行該任務(wù)類。聲明一個(gè)靜態(tài)變量保存添加啟動(dòng)類簡(jiǎn)單微服務(wù),不支持分布式。 SpringCloud(第 009 篇)簡(jiǎn)單 Quartz 微服務(wù),不支持分布式 - 一、大致介紹 1、本章節(jié)僅僅只是為了測(cè)試 Quartz 在微服務(wù)中的使用情況; 2、其實(shí)若只是簡(jiǎn)單的實(shí)現(xiàn)任務(wù)調(diào)用而言的話,Sp...
摘要:加載配置文件失敗加載配置文件失敗添加定時(shí)調(diào)度任務(wù)定時(shí)調(diào)度任務(wù)添加定時(shí)調(diào)度任務(wù)定時(shí)調(diào)度任務(wù)執(zhí)行的張表入數(shù)據(jù)庫(kù)添加啟動(dòng)類簡(jiǎn)單微服務(wù),采用注解配置分布式集群。 SpringCloud(第 054 篇)簡(jiǎn)單 Quartz-Cluster 微服務(wù),采用注解配置 Quartz 分布式集群 - 一、大致介紹 1、因網(wǎng)友提到有沒(méi)有采用注解式配置的Quartz例子,因此本人就貼上了這樣一個(gè)樣例; 2、至...
閱讀 2065·2021-11-23 09:51
閱讀 2208·2021-09-29 09:34
閱讀 3701·2021-09-22 15:50
閱讀 3560·2021-09-22 15:23
閱讀 2574·2019-08-30 15:55
閱讀 704·2019-08-30 15:53
閱讀 3073·2019-08-29 17:09
閱讀 2630·2019-08-29 13:57