轉自:https://blog.csdn.net/weixin_44055234/article/details/106565516
————XXL-JOB*是一個輕量級分布式任務調度平台,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼並接入多家公司線上產品線,開箱即用。且支持線上編寫調度任務。
如何集成?
去gitee或者github下載源代碼 goto xxl-job
- 下載或者克隆后用idea 打開項目或直接用idea克隆項目到本地

- 在項目的doc文件夾下有個db文件夾 ,db文件夾下的sql腳本是xxl-job運行最基本的數據庫和表,用sqlyol或Navicat
運行腳本,或者其他方式執行sql腳本

-
在xxl-job-admin項目中的application.properties中配置相關屬性
xxl-job-admin是調度器 所以得先啟動,如果執行器啟動找不到調度器會報連接異常
把剛剛執行sql腳本的數據庫連接和密碼配置到application.properties中 其他屬性可有所需求在進行配置- 1
- 2
-
等待idea自動導包完成 然后使用maven工具 先把項目clear 在install 或者xxl-job-admin這個模塊需要的模塊 和調度模塊需要的模塊 install
install 后jar包會存在自己的本地倉庫,之后可以直接引入

- 找到xxl-job的啟動類 啟動項目,或者直接打包成jar包 運行也可以
啟動成功后瀏覽器訪問 http://127.0.0.1:8080/xxl-job-admin 就可以看到登錄頁面
默認賬號密碼是 admin 123456

登錄后
因為之前有測試過所以有數據
如何使用? 編寫執行器
6. 新建spring boot 工程 在pom文件中導入坐標
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.2.1-SNAPSHOT</version> </dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
這兩個坐標是必須的 如果沒有spring-boot-starter-web 會無法啟動
- 編寫application.properties中的配置還有logback.xml復制到resources下,這個文件可以自己編寫,為了方便我是從xxl-job-admin模塊下resources文件中拷貝過來的

- 編寫配置類來讀取application.properties的配置
這里我是直接復制xxl-job-admin的配置類
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class XXLJobConfig { private Logger logger = LoggerFactory.getLogger(XXLJobConfig.class); @Value("${xxl.job.admin.addresses}") private String adminAddresses; @Value("${xxl.job.accessToken}") private String accessToken; @Value("${xxl.job.executor.appname}") private String appname; @Value("${xxl.job.executor.address}") private String address; @Value("${xxl.job.executor.ip}") private String ip; @Value("${xxl.job.executor.port}") private int port; @Value("${xxl.job.executor.logpath}") private String logPath; @Value("${xxl.job.executor.logretentiondays}") private int logRetentionDays; @Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppname(appname); xxlJobSpringExecutor.setAddress(address); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; } /** * 針對多網卡、容器內部署等情況,可借助 "spring-cloud-commons" 提供的 "InetUtils" 組件靈活定制注冊IP; * * 1、引入依賴: * <dependency> * <groupId>org.springframework.cloud</groupId> * <artifactId>spring-cloud-commons</artifactId> * <version>${version}</version> * </dependency> * * 2、配置文件,或者容器啟動變量 * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.' * * 3、獲取IP * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); */ }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 編寫需要定時執行的代碼,也就是調度器執行的執行器
在需要執行的方法加上@XxlJob 注解 並且取名,之后在調度器中好區分,否者無法調度
注:Returnt<>(200,"…")中 code 200是成功

- 配置完畢后啟動我們自己創建的工程,在此之前必須啟動xxl-job-admin 否者會報錯
在xxl-job-admin的管理頁面新增執行器,執行器管理->新增->填寫相關信息
appname是之前在我們自己工程里application.properties配置的
名稱可隨便取,只是個區分
機器地址可手動填寫多個,可做高可用
如果你的執行器是多個的話他會用appName來區分,多個執行器介意手動填寫

- 在任務管理中找到剛剛創建的執行器,選中- 新增


任務參數會傳遞到執行器中
其他參數見名知意
- 創建好任務后可在點擊操作任務,點啟動后執行器就會執行


配置任務的時候如果運行模式是GLUE 可以在線編寫調度器代碼和腳本,支持多語言
運行后可在運行報表中查看調度情況,也可以查看調度日志
調度器集群
一個調度器在執行另外一個不會干涉

