xxl-job使用说明文档
xxl-job
xxl-job: 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
项目地址:https://gitcode.com/gh_mirrors/xx/xxl-job
免费下载资源
·
本文档只针对项目中适用步骤说明以及分片广播策略适用说明,如需要了解框架原理及项目特性请参考xxl-job官方文档。
一、使用步骤说明:
-
在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. 到管理页面添加执行器和任务
- 如果是新添加的系统服务应用,在执行器列表里找不到对应的appName时需点击添加新的执行器
1.新增执行器
AppName:对应配置文件中xxl.job.executor.appname
执行器名称:自定义服务名称
执行器排列顺序:自定义执行器列表中的排列顺序
注册方式:
自动注册:无需在下方输入框填写机器地址
适用于对执行机器无特殊要求的场景
手动录入:需要在下方输入框填写机器地址
适用于对执行机器有要求的场景,如本地测试job时
2. 添加任务
注:对应的路由策略作用跟阻塞处理策略根据实际适用场景选择
如下路由策略除了分片广播为并行策略,其他策略都是串行策略
并行策略作用:适用于有大量数据需要定时任务处理时使用
串行策略作用:适用于高可用部署业务系统分担定时任务压力时的路由策略,具体根据使用场景选择
阻塞处理策略:
- 发生场景:在前一轮定时任务未执行完成,且第二轮被发起时。
- 单机串行:下一轮定时任务线程会一直等到上一轮定时任务执行完后再执行
- 丢弃后续调度:第二轮发起的定时任务直接失败不执行
- 覆盖之前的调度:第一轮未执行完的定时任务,直接停止,执行新一轮定时任务
- 选择说明:视业务场景确定
分片广播策略使用说明:
1.分片是以当前执行器注册机器为粒度分片的,当直接使用定时任务管理平台做分片处理时,需要执行任务的服务做高可用部署,最少需要两个服务节点部署,如果系统节点不能满足该情况,使用分片广播的策略跟串行策略没有区别。
2.如果系统为单机部署需要使用分片处理定时任务,来缩短定时任务执行时间时,可以将同一个handler添加到多个执行任务中,使用参数做分片参数传入。
GitHub 加速计划 / xx / xxl-job
27.16 K
10.79 K
下载
xxl-job: 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
最近提交(Master分支:3 个月前 )
e5d26ba2 - 4 个月前
977ad87b - 4 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)