官网教程

概述:

轻量级分布式任务调度平台, 其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

特性:

  • 简单灵活提供Web页面对任务进行管理,管理系统支持用户管理、权限控制;支持容器部署;支持通过通用HTTP提供跨平台任务调度;
  • 丰富的任务管理功能支持页面对任务CRUD操作;支持在页面编写脚本任务、命令行任务、Java代码任务并执行;支持任务级联编排,父任务执行结束后触发子任务执行;支持设置指定任务执行节点路由策略,包括轮询、随机、广播、故障转移、忙碌转移等;支持Cron方式、任务依赖、调度中心API接口方式触发任务执行
  • 高性能任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰;
  • 高可用任务调度中心、任务执行节点均 集群部署,支持动态扩展、故障转移支持任务配置路由故障转移策略,执行器节点不可用是自动转移到其他节点执行支持任务超时控制、失败重试配置支持任务处理阻塞策略:调度当任务执行节点忙碌时来不及执行任务的处理策略,包括:串行、抛弃、覆盖策略
  • 易于监控运维支持设置任务失败邮件告警,预留接口支持短信、钉钉告警;支持实时查看任务执行运行数据统计图表、任务进度监控数据、任务完整执行日志;

导入依赖:

  1. <!--集成xxl-job-->
  2. <dependency>
  3. <groupId>com.xuxueli</groupId>
  4. <artifactId>xxl-job-core</artifactId>
  5. <version>2.3.0</version>
  6. </dependency>

配置文件:

  1. xxl:
  2. job:
  3. accessToken:
  4. admin:
  5. addresses: http://127.0.0.1:8080/xxl-job-admin
  6. executor:
  7. address:
  8. appname: xxl-job-demo-api
  9. ip:
  10. logpath: /Users/liuchengbiao/devWork/sts-works/idea-work/gc-starter-work/gc-starter/logs
  11. logretentiondays: 30
  12. port: 9999

初始化执行器:

  1. package com.gccloud.starter;
  2. import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. @Slf4j
  8. @Configuration
  9. public class XxlJobConfig {
  10. @Value("${xxl.job.admin.addresses}")
  11. private String adminAddresses;
  12. @Value("${xxl.job.accessToken}")
  13. private String accessToken;
  14. @Value("${xxl.job.executor.appname}")
  15. private String appname;
  16. @Value("${xxl.job.executor.address}")
  17. private String address;
  18. @Value("${xxl.job.executor.ip}")
  19. private String ip;
  20. @Value("${xxl.job.executor.port}")
  21. private int port;
  22. @Value("${xxl.job.executor.logpath}")
  23. private String logPath;
  24. @Value("${xxl.job.executor.logretentiondays}")
  25. private int logRetentionDays;
  26. @Bean
  27. public XxlJobSpringExecutor xxlJobExecutor() {
  28. log.info(">>>>>>> xxl-job config init.");
  29. XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
  30. xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
  31. xxlJobSpringExecutor.setAppname(appname);
  32. xxlJobSpringExecutor.setAddress(address);
  33. xxlJobSpringExecutor.setIp(ip);
  34. xxlJobSpringExecutor.setPort(port);
  35. xxlJobSpringExecutor.setAccessToken(accessToken);
  36. xxlJobSpringExecutor.setLogPath(logPath);
  37. xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
  38. return xxlJobSpringExecutor;
  39. }
  40. }

demo:

  1. import cn.hutool.core.date.DateUtil;
  2. import com.xxl.job.core.biz.model.ReturnT;
  3. import com.xxl.job.core.handler.annotation.XxlJob;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.stereotype.Component;
  6. @Slf4j
  7. @Component
  8. public class JobSample {
  9. @XxlJob(value = "xxl-job-sample")
  10. public ReturnT<String> demoJob(String param) {
  11. log.info(">>>>>>>>>>>>>>>>>" + DateUtil.now() + " param: " + param + ">>>>>>>>>>>>执行");
  12. return ReturnT.SUCCESS;
  13. }
  14. }