定时任务--xxlj-ob
xxl-job
随着定时任务的数量和耗时增加,发现quartz对项目本身有较大的性能影响,虽然定时任务触发时间一般为晚上,但是对于有先后顺序和数据量大的处理极有可能影响用户体验,所以在寻找开源替代品中发现了xxl-job,它配置简单使用方便很适合中小型公司。
官网: https://gitee.com/shring/xxl-job/
xxl-job也需要自己的数据库表并,使用的是mysql

依赖
<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>1.6.1</version>
</dependency>
在官方代码中需要注意三个文件即可

配置类XxxlJobConfig直接复制即可
SampleXxlJob:XxlJob开发示例(Bean模式)里面有很多实例方案,我本次使用的是分片方案
/**
* 2、分片广播任务
*/
@XxlJob("shardingJobHandler")
public void shardingJobHandler() throws Exception {
// 分片参数
int shardIndex = XxlJobHelper.getShardIndex();
int shardTotal = XxlJobHelper.getShardTotal();
XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal);
// 业务逻辑
for (int i = 0; i < 20; i++) {
if (i % shardTotal == shardIndex) {
XxlJobHelper.log("第 {} 片, 命中分片开始处理", i);
} else {
XxlJobHelper.log("第 {} 片, 忽略", i);
}
}
}
@XxlJob("")注解是xxl-job的核心,只要配置这个就可以将这个方法交给它管理
自己使用只需要复制方法,给job命名,根据自己的分片策略调用业务逻辑即可
applicationl配置
xxl:
job:
admin:
#xxl-job的地址,如果有多个地址,用逗号分隔开
addresses: http://127.0.0.1:8083/xxl-job-admin
accessToken:
executor:
# xxl-job执行器的名字
appname: plan-exec
address:
#执行器ip,选填,为空会自动获取ip
ip:
#执行器端口号,选填,为空默认为9999
port: 9993
#执行器日志保存天数,选填,值大于3时生效
logretentiondays: 30
#执行器运行日志文件存储磁盘路径,选填,为空使用默认路径
logpath: xxl-job

浙公网安备 33010602011771号