一、不少時候咱們須要隔必定的時間去執行某個任務,爲了實現這樣的需求一般最普通的方式就是利用多線程來實現; 二、可是有時候這個任務還真得去處理一些很是複雜很是耗時的動做,那麼在SpringCloud生態圈中,Scheduled不失爲一種好的解決方案; 三、不過咱們這裏介紹的Scheduled若是部署在多臺服務的話,那麼每臺都會執行,不支持任務調度; 四、若要支持任務調度的話,請回頭查看(第 010 篇)簡單 Quartz-Cluster 微服務,支持集羣任務調度;
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>springms-schedule</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <parent> <groupId>com.springms.cloud</groupId> <artifactId>springms-spring-cloud</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <!-- 訪問數據庫模塊 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- web模塊 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MYSQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> </project>
server: port: 8340 spring: application: name: springms-schedule #所有小寫
package com.springms.cloud.task; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Date; /** * 定時任務類。 * * @author hmilyylimh * * @version 0.0.1 * * @date 2017/10/19 * */ @Component public class ScheduledTasks { private static final org.slf4j.Logger Logger = LoggerFactory.getLogger(ScheduledTasks.class); private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(fixedRate = 1000) public void reportCurrentTime() { System.out.println("當前時間: " + dateFormat.format(new Date())); Logger.info("打印當前時間: {}.", dateFormat.format(new Date())); } /** * 定時任務觸發,操做多個DAO添加數據,事務中任一異常,均可以正常致使數據回滾。 */ @Scheduled(fixedRate = 5000) public void addMovieJob() { System.out.println("當前時間: " + dateFormat.format(new Date())); Logger.info("當前時間: {}.", dateFormat.format(new Date())); } }
package com.springms.cloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; /** * 註解式Schedule配置定時任務,不支持任務調度。 * * @author hmilyylimh * * @version 0.0.1 * * @date 2017/10/19 * */ @SpringBootApplication @EnableScheduling public class MsScheduleApplication { public static void main(String[] args) { SpringApplication.run(MsScheduleApplication.class, args); System.out.println("【【【【【【 Schedule定時任務微服務 】】】】】】已啓動."); } }
/**************************************************************************************** 1、用戶微服務接口測試: 一、註解:EnableEurekaClient 二、啓動 springms-discovery-eureka 模塊服務,啓動1個端口; 三、啓動 springms-provider-user 模塊服務,啓動1個端口; 四、在瀏覽器輸入地址http://localhost:7900/simple/1 能夠看到信息成功的被打印出來,說明用戶微服務正常; 五、在瀏覽器輸入地址 http://localhost:8761 並輸入用戶名密碼 admin/admin 進入Eureka微服務顯示在網頁中,說明用戶微服務確實註冊到了 eureka 服務中; 六、在瀏覽器輸入地址 http://localhost:8761/eureka/apps/springms-provider-user 能夠看到自定義的 <metadata>信息以及用戶微服務的相關信息成功的被展現出來了; ****************************************************************************************/
https://gitee.com/ylimhhmily/SpringCloudTutorial.gitjava
SpringCloudTutorial交流QQ羣: 235322432mysql
SpringCloudTutorial交流微信羣: 微信溝通羣二維碼圖片連接git
歡迎關注,您的確定是對我最大的支持!!!web