简介
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
Github: https://github.com/xuxueli/xxl-job
中文文档:https://www.xuxueli.com/xxl-job/
安装部署
创建数据库
拉取xxl-job代码,执行doc\db\tables_xxl_job.sql
修改xxl-job-admin配置文件
数据库配置
spring.datasource.url=jdbc:mysql://loalhost:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=xxx
spring.datasource.password=xxx
邮箱配置
spring.mail.host=mail.rightongene.com
spring.mail.port=465
spring.mail.username=xxx@rightongene.com
spring.mail.from=xxx@rightongene.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.ssl.trust=mail.rightongene.com
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
基础配置
xxl.job.accessToken=my_token
xxl.job.i18n=zh_CN
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
xxl.job.logretentiondays=30
打包运行xxl-job-admin
将xxl-job-admin项目打包,上传到服务器并运行。
地址:http://ip:port/xxl-job-admin/
默认账户:admin,密码:123456
登录后,请修改并妥善保存密码
项目接入
引入依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.1</version>
</dependency>
添加配置
xxl:
job:
executor:
appname: xxljob-demo
address:
ip:
port: 9999
logpath: D:\work\demo\xxljob-demo\jobhandler
logretentiondays: 30
accessToken: my_token
admin:
addresses: http://ip:port/xxl-job-admin/
添加配置类
package com.example.xxljobdemo.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.appname}")
private String appname;
@Value("${xxl.job.executor.address}")
private String address;
@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
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setAddress(address);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
定时任务示例
package com.example.xxljobdemo.job;
import com.example.xxljobdemo.dao.order.CouponCodeDao;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class SampleXxlJob {
private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
/**
* 1、简单任务示例(Bean模式)
*/
@XxlJob("demoJob1")
public void demoJobHandler() throws Exception {
XxlJobHelper.log("my test job.");
//业务逻辑
}
public void init(){
logger.info("init");
}
public void destroy(){
logger.info("destroy");
}
}
后台配置
添加执行器,并填写内容
添加任务,并填写内容
启动