摘要:定時提醒系統之前通過做了一個定時查詢系統,前幾天通過編寫了個升級版,功能和之前的差不多,現在來看看吧。將參數傳遞到類中創建事件成功,執行時間為創建時間后想要修改的話就需要這么寫在實現類里面注入不了那么可以這么做這個就是模塊的部分介紹了。
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90155.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、至...
閱讀 659·2021-10-09 09:41
閱讀 640·2019-08-30 15:53
閱讀 1071·2019-08-30 15:53
閱讀 1206·2019-08-30 11:01
閱讀 1562·2019-08-29 17:31
閱讀 983·2019-08-29 14:05
閱讀 1711·2019-08-29 12:49
閱讀 409·2019-08-28 18:17