xxl-job 排程中心
阿新 • • 發佈:2020-12-22
1,下載自己需要的版本
1,https://github.com/xuxueli/xxl-job
2,https://gitee.com/xuxueli0323/xxl-job/releases (牆內推薦)
3,牆內網路推薦使用第二個地址,筆者下 2.2.0 版本
2,整合到自己的專案
將下載好的專案中 xxl-job-admin 拷貝到自己的 springcloud 專案中
建立相應的資料庫並執行指令碼:xxl-job\doc\db\tables_xxl_job.sql
1,修改 pom 檔案依賴
<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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.5.RELEASE</version> <relativePath/> </parent> <groupId>com.hwq</groupId> <artifactId>sc-xxl-job-admin</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <dependencies> <!-- WEB 組建 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 模板組建 Freemarker --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <!-- 郵件組建 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <!-- 專案健康健康 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 資料庫 MySQL 連線依賴 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 資料持久化框架 MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!-- 排程核心依賴 --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.2.0</version> </dependency> <!-- 測試依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <!-- 打包後名稱 --> <finalName>sc-xxl-job-admin</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2,修改配置檔案參考
application.yml
server: # 埠 port: 1081 # Servlet 訪問專案名 servlet: context-path: /xxl-job-admin spring: mvc: servlet: # 載入 DispatcherServlet 的啟動優先順序 load-on-startup: 0 # 接管的靜態資源路由規則 static-path-pattern: /static/** resources: # 靜態資源路徑 static-locations: classpath:/static/ freemarker: # 模板地址 template-loader-path: classpath:/templates/ # 模板字尾 suffix: .ftl # 字元編碼 charset: UTF-8 # HTTP 請求物件的物件名稱 request-context-attribute: request settings: number_format: 0.########## # 資料來源 datasource: url: jdbc:mysql://192.168.200.100:3306/xxljob driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 920619 # 郵件配置 mail: host: smtp.163.com port: 25 username: [email protected] password: FYZOEDLNWIHRBTQY mybatis: # XML 對映地址 mapper-locations: classpath:/mybatis-mapper/*Mapper.xml xxl: job: # 鑑權值 accessToken: huangweiqiang # 語言包: zh_CN 中文、zh_TC 臺灣、en 英文 i18n: zh_CN # 觸發池最大值 triggerpool: fast: max: 200 slow: max: 100 # 日誌保留日(單位:天) logretentiondays: 30 # 健康檢查 management: server: servlet: context-path: /actuator health: mail: enabled: false
3,執行,訪問
1,訪問地址:192.168.200.100:1081/xxl-job-admin
2,預設的賬號密碼:admin/123456
3,執行器配置
pom 依賴
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
</dependency>
配置檔案
xxl: job: admin: # 排程中心服務端地址 addresses: http://127.0.0.1:1081/xxl-job-admin # 鑑權值 accessToken: huangweiqiang executor: # 執行器的名稱 appname: ${spring.application.name} # 執行器的 IP ip: ${spring.cloud.client.ip-address} # 執行器的 埠 port: 2121 # 執行器日誌的儲存路徑 logpath: ${user.dir}/z-file/logging/${spring.application.name}/job # 執行日誌的儲存時間 logretentiondays: 30
在方法上新增 @XxlJob 註解就變成了執行器
package com.hwq.admin.back.executor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hwq.common.model.dto.TestDTO;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class TestExecutor {
@Autowired
private ObjectMapper objectMapper;
@XxlJob("test/test1")
public ReturnT<String> test1(String param) throws JsonProcessingException {
TestDTO testDTO = objectMapper.readValue(param, TestDTO.class);
System.out.println(testDTO);
return new ReturnT<>(ReturnT.SUCCESS_CODE, "排程執行成功");
}
@XxlJob("test/test2")
public ReturnT<String> test2(String param) throws JsonProcessingException {
TestDTO testDTO = objectMapper.readValue(param, TestDTO.class);
System.out.println(testDTO);
return new ReturnT<>(ReturnT.SUCCESS_CODE, "排程執行成功");
}
}
4,頁面配置
1,新增執行器
2,新增任務
3,配置序列任務的思路
在日常開發中,我們的排程所需的資料來源可能會依賴另一個排程的結果,這是我們一般會採取兩種解解決方式:
1,估算依賴排程的執行時間,將排程時間配置到依賴排程執行完成後的時間
2,將排程作為依賴排程的子任務,配置序列任務
從上圖的配置我們可以看出,xxl-job 是支援配置序列任務的
具體配置思路:將一個排程作為另一個排程的子任務,任意填寫一個 cron,然後狀態設定為停止