xxl-job使用說明文檔

本文檔只針對項目中適用步驟說明以及分片廣播策略適用說明,如需要了解框架原理及項目特性請參考xxl-job官方文檔

一、使用步驟說明:

 

  1. 在maven項目中添加下面的依賴(<version>選擇最新的穩定版本</version>)

<!-- xxl-job-core -->
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.1.0</version>
</dependency>

2. 添加配置類

@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;
    @Value("${xxl.job.executor.appname}")
    private String appName;
    @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(initMethod = "start", destroyMethod = "destroy")
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppName(appName);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }
}

 

   3.編寫定時任務處理類

      • 繼承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
      • 註冊到Spring容器:添加“@Component”註解,被Spring容器掃描爲Bean實例;
      • 註冊到執行器工廠:添加“@JobHandler(value="自定義jobhandler名稱")”註解,註解value值對應的是調度中心新建任務的JobHandler屬性的值。
      • 執行日誌:需要通過 "XxlJobLogger.log" 打印執行日誌;
/**
 * 任務Handler示例(Bean模式)
 *
 * 開發步驟:
 * 1、繼承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
 * 2、註冊到Spring容器:添加“@Component”註解,被Spring容器掃描爲Bean實例;
 * 3、註冊到執行器工廠:添加“@JobHandler(value="自定義jobhandler名稱")”註解,註解value值對應的是調度中心新建任務的JobHandler屬性的值。
 * 4、執行日誌:需要通過 "XxlJobLogger.log" 打印執行日誌;
 */
@JobHandler(value="myHandler")
@Component
public class MyJobHandler 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);
         System.out.println("beat at:" + i);
         TimeUnit.SECONDS.sleep(2);
      }
      return SUCCESS;
   }

}

4. 添加xxl-job對應配置如下:

### 調度中心部署跟地址 [選填]:如調度中心集羣部署存在多個地址則用逗號分隔。執行器將會使用該地址進行"執行器心跳註冊"和"任務結果回調";爲空則關閉自動註冊;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

### 執行器AppName [選填]:執行器心跳註冊分組依據;爲空則關閉自動註冊
xxl.job.executor.appname=xxl-job-executor-sample

### 執行器IP [選填]:默認爲空表示自動獲取IP,多網卡時可手動設置指定IP,該IP不會綁定Host僅作爲通訊實用;地址信息用於 "執行器註冊" 和 "調度中心請求並觸發任務";
xxl.job.executor.ip=

### 執行器端口號 [選填]:小於等於0則自動獲取;默認端口爲9999,單機部署多個執行器時,注意要配置不同執行器端口;
xxl.job.executor.port=9999

### 執行器通訊TOKEN [選填]:非空時啓用;
xxl.job.accessToken=

### 執行器運行日誌文件存儲磁盤路徑 [選填] :需要對該路徑擁有讀寫權限;爲空則使用默認路徑;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler

### 執行器日誌保存天數 [選填] :值大於3時生效,啓用執行器Log文件定期清理功能,否則不生效;
xxl.job.executor.logretentiondays=-1

5. 到管理頁面添加執行器和任務

  1. 如果是新添加的系統服務應用,在執行器列表裏找不到對應的appName時需點擊添加新的執行器
  2.  

1.新增執行器

AppName:對應配置文件中xxl.job.executor.appname

執行器名稱:自定義服務名稱

執行器排列順序:自定義執行器列表中的排列順序

註冊方式:

自動註冊:無需在下方輸入框填寫機器地址

適用於對執行機器無特殊要求的場景

手動錄入:需要在下方輸入框填寫機器地址

適用於對執行機器有要求的場景,如本地測試job時

  2. 添加任務

 

 

注:對應的路由策略作用跟阻塞處理策略根據實際適用場景選擇

 

如下路由策略除了分片廣播爲並行策略,其他策略都是串行策略

並行策略作用:適用於有大量數據需要定時任務處理時使用

串行策略作用:適用於高可用部署業務系統分擔定時任務壓力時的路由策略,具體根據使用場景選擇

 

阻塞處理策略:

  1. 發生場景:在前一輪定時任務未執行完成,且第二輪被髮起時。
  2. 單機串行:下一輪定時任務線程會一直等到上一輪定時任務執行完後再執行
  3. 丟棄後續調度:第二輪發起的定時任務直接失敗不執行
  4. 覆蓋之前的調度:第一輪未執行完的定時任務,直接停止,執行新一輪定時任務
  5. 選擇說明:視業務場景確定

分片廣播策略使用說明:

1.分片是以當前執行器註冊機器爲粒度分片的,當直接使用定時任務管理平臺做分片處理時,需要執行任務的服務做高可用部署,最少需要兩個服務節點部署,如果系統節點不能滿足該情況,使用分片廣播的策略跟串行策略沒有區別。

2.如果系統爲單機部署需要使用分片處理定時任務,來縮短定時任務執行時間時,可以將同一個handler添加到多個執行任務中,使用參數做分片參數傳入。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章