目录
一、xxl-job模块介绍
项目地址:https://github.com/ZiXinZhu/xxl-job
介绍下上面的三个模块
- xxl-job-admin
xxl-job-admin是xxl-job分布式任务调度平台在该平台配置和执行我们想要调度的任务
- xxl-job-core
xxl-job-core是一个工具包,分布式任务调度平台与应用之间的长连接等都在这个包实现。xxl-job-admin和我们的任务应用都需要导入该包
- xxl-job-executor
xxl-job-executor是我自己写的一个简单测试任务的应用
二、配置xxl-job-admin
将xxl-job代码下载到本地修改xxl-job-admin配置
1.创建数据库
将tables_xxl_job.sql ddl脚本在xxl_job数据库中执行创建数据库
2.配置xxl-job-admin的application.properties文件
只需要修改上面这两个地方,①将数据源配置成自己的,②配置邮箱账号密码,注意这个密码不是平时的邮箱登录密码,是第三方登录授权密码在下图位置获取
…中间省略一大截
3.启动
注意:如果要打包到服务器启动需要先install root,这样才能将xxl-job-core install到本地使用,再打包xxl-job-admin就不会报错了
启动项目访问地址:http://127.0.0.1:8080/xxl-job-admin/ 如下:那么xxl-job-admin就配置启动完毕了
三、创建xxl-job-executor应用及其任务
项目结构:
1.添加依赖
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.1.2-SNAPSHOT</version>
</dependency>
这个依赖使我们上面install root到本地仓库的,可以直接引入并使用
2.配置application.properties文件
# web port
server.port=8082
# log config
logging.config=classpath:static/logback.xml
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### xxl-job executor address
# 应用名称管理后台配置任务时会用到
xxl.job.executor.appname=tinelion
xxl.job.executor.ip=
xxl.job.executor.port=9999
### xxl-job, access token
xxl.job.accessToken=
### xxl-job log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### xxl-job log retention days
xxl.job.executor.logretentiondays=30
3.创建xxl-job配置类
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
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.Configuration;
@Configuration
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
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;
}
}
4.创建xxl-job测试类
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.springframework.stereotype.Component;
/**
* 任务Handler示例(Bean模式)
*
* 开发步骤:
* 1、继承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
* 2、注册到Spring容器:添加“@Component”注解,被Spring容器扫描为Bean实例;
* 3、注册到执行器工厂:添加“@JobHandler(value="自定义jobhandler名称")”注解,注解value值对应的是调度中心新建任务的JobHandler属性的值。
* 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
*
* @author xuxueli 2015-12-19 19:43:36
*/
//任务名称管理后台配置任务时会用到
@JobHandler(value="zzxHandler")
@Component
public class DemoJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
System.out.println("成功!");
return SUCCESS;
}
}
到这里我们的任务应用就创建完了
四、xxl-job-admin管理后台任务配置及执行
分别启动xxl-job-admin模块和xxl-job-executor模块
1.任务执行器配置应用名
这个AppName就是xxl-job-executor应用application.properties文件下的xxl.job.executor.appname=tinelion
2.任务管理中加入任务
这里的JobHandler就是xxl-job-executor应用测试类@JobHandler(value=“zzxHandler”)注解里面的名称
3.配置好后执行任务
- 失败
- 启动应用再次测试,成功!