以前經過Springboot作了一個定時查詢系統,前幾天經過SpringCloud編寫了個升級版,功能和以前的差很少,如今來看看吧。java
首先須要先關注個人測試號啦,本系統經過微信測試號第三方受權登陸,掃描下方二維碼便可關注
git
關注以後進入個人測試號點擊定時提醒則進入本系統github
既然是使用SpringCloud,那麼確定是要把一個項目分爲幾個模塊來運行啦spring
本人仍是學生,雲服務器只有一臺,因此就把這四個模塊放在同一臺服務器了,勿怪勿怪~服務器
系統分爲四個模塊微信
注:本系統沒有運用zuul網關app
Eureka Server我就不說了,簡單的配置一下就能夠直接運用了。負載均衡
quartz定時提醒呢,就須要quartz這個第三方的庫工具
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>
並且還須要一些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進行負載均衡(雖然本系統沒有集羣~)
微信第三方受權和發送模板消息就很少說了,就是使用第三方的庫進行編寫
<dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> <version>2.8.0</version> </dependency>
微信第三方受權的github也貼出來,能夠自行去看API,點擊這裏進入github
項目效果演示
好了,介紹就到這裏啦~有什麼問題就發我郵箱提問吧13427434344@163.com