SpringCloud(第 046 篇)註解式Schedule配置定時任務,不支持任務調度

SpringCloud(第 046 篇)註解式Schedule配置定時任務,不支持任務調度

1、大體介紹

一、不少時候咱們須要隔必定的時間去執行某個任務,爲了實現這樣的需求一般最普通的方式就是利用多線程來實現;
二、可是有時候這個任務還真得去處理一些很是複雜很是耗時的動做,那麼在SpringCloud生態圈中,Scheduled不失爲一種好的解決方案;
三、不過咱們這裏介紹的Scheduled若是部署在多臺服務的話,那麼每臺都會執行,不支持任務調度;
四、若要支持任務調度的話,請回頭查看(第 010 篇)簡單 Quartz-Cluster 微服務,支持集羣任務調度;

2、實現步驟

2.1 添加 maven 引用包

<?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>

2.2 添加應用配置文件(springms-schedule\src\main\resources\application.yml)

server:
  port: 8340
spring:
  application:
    name: springms-schedule  #所有小寫

2.3 添加定時任務類(springms-schedule\src\main\java\com\springms\cloud\task\ScheduledTasks.java)

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()));
    }
}

2.4 添加微服務啓動類(springms-schedule\src\main\java\com\springms\cloud\MsScheduleApplication.java)

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定時任務微服務 】】】】】】已啓動.");
	}
}

3、測試

/****************************************************************************************
 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>信息以及用戶微服務的相關信息成功的被展現出來了;
 ****************************************************************************************/

4、下載地址

https://gitee.com/ylimhhmily/SpringCloudTutorial.gitjava

SpringCloudTutorial交流QQ羣: 235322432mysql

SpringCloudTutorial交流微信羣: 微信溝通羣二維碼圖片連接git

歡迎關注,您的確定是對我最大的支持!!!web

相關文章
相關標籤/搜索