首頁 > 軟體

springboot整合xxl-job的範例程式碼

2022-06-23 18:00:18

關於xxl-job

在我看來,總體可以分為三大塊:

  1. 排程中心
  2. 執行器
  3. 設定定時任務

排程中心

簡單來講就是 xxl-job-admin那個模組,設定:

  • 從doc裡面取出xxl-job.sql的指令碼檔案,建立對應的資料庫。
  • 進行組態檔的設定,如下圖

進行紀錄檔存放位置的修改

  • 然後idea打包之後就能當作排程中心執行了
  • 存取地址:ip:port/xxl-job-admin 預設的賬號密碼:admin/123456 注意:你進去後修改密碼,有些瀏覽器就算你賬號密碼對了,可能還是會顯示密碼錯誤,預設使用谷歌瀏覽器。

執行器

就是我們使用springboot整合xxl-job需要編寫的程式碼。 設定過程:

1.引入核心依賴,這裡使用的是2.2.0

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

注意:這裡的版本與你xxl-job-admin的版本保持一致。

2.組態檔

xxl:
  job:
    admin:
      addresses: http://127.0.0.1:8106/xxl-job-admin
    executor:
      appname: testJob #xxljob設定的執行器名稱,
      ip:             #執行器IP,預設為空表示自動獲取IP
      port: 9988 #xxljob設定的埠號,預設為9999
      logpath: ./data/xxl-job/jobhandler  #執行器執行紀錄檔檔案儲存磁碟路徑
      logretentiondays: -1  #排程中心紀錄檔表資料儲存天數,過期紀錄檔自動清理;限制大於等於7時生效,否則, 如-1,關閉自動清理功能
    accessToken: #排程中心通訊TOKEN [選填]:非空時啟用

這裡ip的獲取,為空可以自動獲取,你也可以在排程中心管理頁面進行手動設定。

如果需要使用accessToken,那麼就需要在xxl-job-admin的組態檔裡進行設定對應。

3.編寫設定類

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
​
/**
 * @DESC xxl-job設定類
 * @AUTHOR lh
 * @DATE 2022/6/23 11:41
 */
​
@Configuration
@Slf4j
public class XxlJobConfig {
​
    @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.accessToken}")
    private String accessToken;
​
    @Value("${xxl.job.executor.logpath}")
    private String logPath;
​
    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;
​
    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appName);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
​
        return xxlJobSpringExecutor;
    }
}

這裡需要注意,高版本與低版本的設定類略有不同。

4.編寫測試類

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
​
/**
 * @DESC 測試定時任務程式碼
 * @AUTHOR lh
 * @DATE 2022/6/23 11:52
 */
@Slf4j
@Component
public class TestJob {
​
    @XxlJob("xxlJobTest")
    public ReturnT<String> xxlJobTest(String date) {
        log.info("---------xxlJobTest定時任務執行成功--------");
        return ReturnT.SUCCESS;
    }
}

注意:2.2.0版本,已經不支援@JobHandler註解了。 這裡的XxlJob與排程中心的定時任務設定相對應。

到此這篇關於springboot整合xxl-job的範例程式碼的文章就介紹到這了,更多相關springboot整合xxl-job內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com