分布式任务调度xxl-job教程

1.下载源码

链接: https://github.com/xuxueli/xxl-job
将整个项目clone下来,两种方式,git和https,然后将clone下来的项目导入到idea。
分布式任务调度xxl-job教程

2. 编译源码及启动调度中心

1.调度数据库初始化SQL脚本:
doc目录下**/xxl-job/doc/db/tables_xxl_job.sql **
在本地数据库直接跑即可,正常情况下生成16张表;
2. 改变调度中心xxl-job-admin下application.properties配置,数据库配置必须为跑sql脚本的数据库。
调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例;
如果mysql做主从,调度中心集群节点务必强制走主库;
3.若端口和其他服务冲突可以选择修改端口

### web
server.port=8089
server.context-path=/xxl-job-admin
  1. 修改logback.xml,将value值改为存在的文件
<property name="log.path" value="/Users/lan/Desktop/java/log/xxl-job/xxl-job.log"/>

6.因为调度中心已经支持springboot,可以直接通过springboot内置容器启动

3. 执行器配置

  1. xxl-job-executor-samples定义了多个执行器实例,也可以在自有的项目集成执行器配置,首先引入任务调度执行组件:
<dependency>
   		<groupId>com.xuxueli</groupId>
   		<artifactId>xxl-job-core</artifactId>
   		<version>2.0.1</version>
   	</dependency>
  1. 我自身项目有springboot搭建 ,因此首先在yml中进行如下配置
    分布式任务调度xxl-job教程
    3.配置任务执行器
/**
 *@Target 永无bug
 *@Description
 *@Author dd
 *@Date 2019/1/25 15:35
 **/
@Configuration
@ComponentScan(basePackages = "com.xfn.running.filter.jobhandler")
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.accessToken}")
    private String accessToken;

    @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.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }

}
  1. 任务定义
/**
*@Target 永无bug
*@Description
*@Author dd
*@Date 2019/1/25 15:41
**/
@JobHandler(value="demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler{

   @Override
   public ReturnT<String> execute(String param) throws Exception {

       for (int i = 0; i < 5; i++) {
           TimeUnit.SECONDS.sleep(2);
           System.out.println("hahahhahahahahahahahahha");
       }
       return SUCCESS;
   }
}

5.注意点:
config定义的属性在配置文件中必须配置,appname必须指定为自身项目名称

启动项目 http://localhost:8089/xxl-job-admin

4.效果展示

分布式任务调度xxl-job教程
分布式任务调度xxl-job教程
分布式任务调度xxl-job教程

总结

第一次写博客,多包涵,共勉。
附上许兄的文档地址 http://www.xuxueli.com/xxl-job/#/