xxl-job簡用記錄
- 簡述
- 技術堆疊
- 分支模塊
- xxl-job樣例
- 調度中心
- 執行器
- 匯入core代碼
- 配置注冊xxl
- 執行中心使用
- 調度配置
- 驗證
- 原始碼
簡述
在我們日常開發中會有一些業務邏輯需要定時任務處理,常用的定時任務有quartz和多執行緒定時任務@Scheduled實作,但是實作并沒有良好的上報資料和監控資料,定時任務的結果無法實時告訴我們以及一些錯誤轉移和并發定時調度問題等,要實作并發定時調度和故障轉移等功能時存在難點,因此使用xxl-job處理此問題,這篇文章簡單記錄使用xxl-job使用,
技術堆疊
- spring boot基礎框架模塊
- java基礎技術
- xxl-job分布式調度
分支模塊
這里居于上一章節專案創建 feat/xxl-job分支
xxl-job樣例
調度中心
- 官網原始碼地址:git倉庫地址
- mysql表:https://github.com/xuxueli/xxl-job/blob/2.2.0/doc/db/tables_xxl_job.sql
- 可直接下載代碼打包,或者使用docker打包下載使用,這里我個人使用docker鏡像運行,docker-compose.yml(docker-compose up -d啟動)如下:
version: '2.0'
services:
xxl-job-admin:
image: xuxueli/xxl-job-admin:2.2.0 # 公司使用版本
container_name: xxl-job-admin
restart: always
environment:
# host.docker.internal: 主機地址
PARAMS: "--spring.datasource.username=root --spring.datasource.password=root --spring.datasource.url=jdbc:mysql://host.docker.internal:3306/xxl_job?Unicode=true&characterEncoding=UTF-8"
volumes:
- /docker-software/xxl-job/applogs:/data/applogs
ports:
- "8089:8080"
啟動成功后,登錄調度中心查看http://localhost:8089/xxl-job-admin/ ,默認登錄用戶名和密碼是admin/123456
如圖:

執行器
匯入core代碼
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.2.0</version>
</dependency>
配置注冊xxl
application-dev.yaml配置
server:
port: 8088
xxl:
job:
admin:
address: http://localhost:8089/xxl-job-admin
executor:
appname: user-center
ip: 127.0.0.1
port: 9999
logpath: ./logs/xxl-job
logretentiondays: 30
XxlJobSpringExecutor配置
package com.lgh.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Data
@Configuration
@ConfigurationProperties(prefix = "xxl.job.executor")
public class XxlJobExecutorConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobExecutorConfig.class);
@Value("${xxl.job.admin.address}")
private String adminAddresses;
private String appname;
private String ip;
private int port;
private String accessToken = "";
private String logPath;
private int logRetentionDays;
@Bean
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.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
執行中心使用
調度邏輯代碼
package com.lgh.job;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class XxlJobTest extends IJobHandler {
@XxlJob("testJob")
@Override
public ReturnT<String> execute(String s) throws Exception {
try {
log.info(String.format("XxlJobTest execute,params is %s", s));
} catch (Exception e) {
return FAIL;
}
return SUCCESS;
}
}
調度配置
執行器配置,記住,這里是docker容器,真實的ip地址是宿主ip,即host.docker.internal

任務配置

驗證
查看日志驗證或者打斷點:
2021-02-27 17:08:50.014 INFO 40101 --- [dPool-799972927] c.xxl.job.core.executor.XxlJobExecutor : >>>>>>>>>>> xxl-job regist JobThread success, jobId:2, handler:com.xxl.job.core.handler.impl.MethodJobHandler@3656a6cd[class com.lgh.job.XxlJobTest#execute]
2021-02-27 17:08:50.015 INFO 40101 --- [ Thread-12] com.lgh.job.XxlJobTest : XxlJobTest execute,params is 測驗XxlJobTest
2021-02-27 17:08:52.418 INFO 40101 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
2021-02-27 17:08:55.008 INFO 40101 --- [ Thread-12] com.lgh.job.XxlJobTest : XxlJobTest execute,params is 測驗XxlJobTest
2021-02-27 17:09:00.000 INFO 40101 --- [ Thread-12] com.lgh.job.XxlJobTest : XxlJobTest execute,params is 測驗XxlJobTest
2021-02-27 17:09:04.994 INFO 40101 --- [ Thread-12] com.lgh.job.XxlJobTest : XxlJobTest execute,params is 測驗XxlJobTest

原始碼
github
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/264473.html
標籤:java
上一篇:面向物件---繼承
