概述:
轻量级分布式任务调度平台, 其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
特性:
- 简单灵活提供Web页面对任务进行管理,管理系统支持用户管理、权限控制;支持容器部署;支持通过通用HTTP提供跨平台任务调度;
- 丰富的任务管理功能支持页面对任务CRUD操作;支持在页面编写脚本任务、命令行任务、Java代码任务并执行;支持任务级联编排,父任务执行结束后触发子任务执行;支持设置指定任务执行节点路由策略,包括轮询、随机、广播、故障转移、忙碌转移等;支持Cron方式、任务依赖、调度中心API接口方式触发任务执行
- 高性能任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰;
- 高可用任务调度中心、任务执行节点均 集群部署,支持动态扩展、故障转移支持任务配置路由故障转移策略,执行器节点不可用是自动转移到其他节点执行支持任务超时控制、失败重试配置支持任务处理阻塞策略:调度当任务执行节点忙碌时来不及执行任务的处理策略,包括:串行、抛弃、覆盖策略
- 易于监控运维支持设置任务失败邮件告警,预留接口支持短信、钉钉告警;支持实时查看任务执行运行数据统计图表、任务进度监控数据、任务完整执行日志;
导入依赖:
<!--集成xxl-job--><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.0</version></dependency>
配置文件:
xxl:job:accessToken:admin:addresses: http://127.0.0.1:8080/xxl-job-adminexecutor:address:appname: xxl-job-demo-apiip:logpath: /Users/liuchengbiao/devWork/sts-works/idea-work/gc-starter-work/gc-starter/logslogretentiondays: 30port: 9999
初始化执行器:
package com.gccloud.starter;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;@Slf4j@Configurationpublic class XxlJobConfig {@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;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {log.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;}}
demo:
import cn.hutool.core.date.DateUtil;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;@Slf4j@Componentpublic class JobSample {@XxlJob(value = "xxl-job-sample")public ReturnT<String> demoJob(String param) {log.info(">>>>>>>>>>>>>>>>>" + DateUtil.now() + " param: " + param + ">>>>>>>>>>>>执行");return ReturnT.SUCCESS;}}
