您的位置:首页 > 其它

任务调度平台XXL-JOB使用

2017-12-19 16:27 621 查看
分布式任务调度平台xxl-job是一个开源框架。GitHub上有详细的源码、文档和demo,文档地址是http://www.xuxueli.com/xxl-job/#/?id=%e4%b8%80%e3%80%81%e7%ae%80%e4%bb%8b。里面有详细的介绍。写此博客为了整理思路,巩固加强。

1. 配置部署调度中心。

首先在gitHub上下载源代码,是maven项目。执行tables_xxl_job.sql建表语句。文档里要求mysql5.6+。在mysql5.5也可以执行。需要先建数据库,名字任意。在idea里面启动项目,用的tomcat是8.5.24。成功启动项目。调度中心的配置内容参考文档。注意里面的数据库名称就是自己新建的数据库名了。


2. 配置部署 执行器项目

执行器项目通常指 目前开发的项目。在项目中整合xxl-job任务调度框架,只需要引入一个maven包、配置一下参数和实现接口就可以。非常方便。这里记录一下和springboot的集成。引入


<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>1.8.2</version>
</dependency>


2.1 application.yml的配置文件

yml配置文件加上配置。

xxl:
job:
admin:
addresses: "@xxl.job.admin.addresses@"
executor:
appname: "@xxl.job.executor.appname@"
ip: "@xxl.job.executor.ip@"
port: "@xxl.job.executor.port@"
logpath: "@xxl.job.executor.logpath@"
accessToken: "@xxl.job.accessToken@"


其中的”@xxl.job.executor.appname@”等配置是在config_local.properties文件里,参数具体意思参考文档。通常yml里是写具体的参数值,这里用这种方式是如何实现和config_local.properties文件对应的,是通过maven的prefile配置吗?暂时不懂,还需去了解。

#xxl-job 调度中心工程的地址
xxl.job.admin.addresses=http://localhost:8999/xxl-job-admin

### xxl-job executor address
xxl.job.executor.appname=xxl-job-ots-server
xxl.job.executor.ip=
xxl.job.executor.port=9946

### xxl-job log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/

### xxl-job, access token
xxl.job.accessToken=


编写XxlJobConfig类

package com.lancy.task;

import com.xxl.job.core.executor.XxlJobExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
* xxl-job config
* @author xuxueli 2017-04-28
*/
@Configuration
@ComponentScan(basePackages = "com.lancy.task")
//basePackages指向实现了接口IJobHandle的类所在包
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

@Value("${xxl.job.admin.addresses}")
private String addresses;

@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.accessToken}")
private String accessToken;

@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
xxlJobExecutor.setIp(ip);
xxlJobExecutor.setPort(port);
xxlJobExecutor.setAppName(appname);
xxlJobExecutor.setAdminAddresses(addresses);
xxlJobExecutor.setLogPath(logpath);
xxlJobExecutor.setAccessToken(accessToken);
return xxlJobExecutor;
}

}


写一个任务类,继承IJobHandler。这个类需要在上面的XxlJobConfig里配置的包下?

package com.lancy.task;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHander;
import org.springframework.stereotype.Component;

@Component
@JobHander(value="helloWorld")
//@Comonent 把类交给spring容器管理,必须
//@JobHander 唯一标识一个任务。调度中心会查找这个唯一的名称来启动执行此类的execute方法。
public class HelloWorld extends IJobHandler {
@Override
public ReturnT<String> execute(String... strings) throws Exception {
System.out.println("你好呀");
return ReturnT.SUCCESS;
}
}


2.2 application.properties的配置文件

application.properties配置文件加上配置。

# xxl-job
xxl.job.admin.addresses=http://localhost:8999/xxl-job-admin

### xxl-job executor address
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.port=9998

### xxl-job log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/

### xxl-job, access token
xxl.job.accessToken=


然后编写XxlJobConfig类、写一个任务类,继承IJobHandler,同上。到这里就把springboot的配置讲完了。源码里还有和spring整合的demo,也很简单,可以参考。

3. 调度中心配置

添加执行器



任务管理添加任务



到此,整合xxl-job就完成了,非常方便实用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: