springboot整合xxl-job的示例代碼

關於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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: