1.XXL-JOB簡介
XXL-JOB is a lightweight distributed task scheduling framework. It's core design goal is to develop quickly and learn simple, lightweight, and easy to expand. Now, it's already open source, and many companies use it in production environments, real "out-of-the-box".
XXL-JOB是一個輕量級分布式任務調度平台,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼並接入多家公司線上產品線,開箱即用。
——引用自XXL-JOB的GIT項目介紹
關於XXL-JOB的其他介紹可以參考官網中文文檔介紹,它含有豐富的特性,支持分布式和動態任務添加以及權限控制等。
2.搭建XXL-JOB項目
①下載源碼
https://github.com/xuxueli/xxl-job/
②執行SQL
xxl-job-2.1.1\xxl-job-2.1.1\doc\db\tables_xxl_job.sql
③修改配置
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### xxl-job, access token 秘鑰填了 下面的子項目要和這個一致
xxl.job.accessToken=
需要注意的是子項目中的配置地址要和admin中的訪問首頁地址一致:
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
④啟動項目
我們首選需要啟動項目中的admin,然后再啟動xxl-job-executor-samples下面的內容,這里我們啟動,這里比較簡單的方式是通過springboot的例子進行啟動,這也是作者推薦的啟動方式。
啟動后訪問調度中心訪問地址:http://localhost:8080/xxl-job-admin (該地址執行器將會使用到,作為回調地址)
默認登錄賬號 “admin/123456”, 登錄后運行界面如下圖所示
關於job的配置可以參考Demo示例,然后我們添加時候用BEAN模式,名稱為@Service的名稱:
/**
* 任務Handler示例(Bean模式)
*
* 開發步驟:
* 1、繼承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
* 2、注冊到Spring容器:添加“@Component”注解,被Spring容器掃描為Bean實例;
* 3、注冊到執行器工廠:添加“@JobHandler(value="自定義jobhandler名稱")”注解,注解value值對應的是調度中心新建任務的JobHandler屬性的值。
* 4、執行日志:需要通過 "XxlJobLogger.log" 打印執行日志;
*
* @author xuxueli 2015-12-19 19:43:36
*/
@JobHandler(value="demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
XxlJobLogger.log("XXL-JOB, Hello World.");
System.out.println("XXL-JOB, Hello World.");
for (int i = 0; i < 5; i++) {
XxlJobLogger.log("beat at:" + i);
TimeUnit.SECONDS.sleep(2);
}
return SUCCESS;
}
}
3.問題總結
- 連接不上數據庫?
需要在admin中配置Datasource相關連接,有密碼需要填寫正確。 - 執行日志一直處於執行中,回調失敗?
配置子項目的時候一定要和admin的訪問地址一致,用於回調。 - 找不到代碼編寫界面?
GLUE模式只在新增的時候選定了,才能使用界面編寫代碼,支持版本回退。 - 執行器管理不生效?
AppName要和配置里面的一致,手動添加的地址要和netty對外的端口號一致(不是tomcat秋啟動端口號),默認為9999。