分布式任务调度xxl-job教程
SpringBoot集成分布式任务调度xxl-job
1.下载源码
链接: https://github.com/xuxueli/xxl-job
将整个项目clone下来,两种方式,git和https,然后将clone下来的项目导入到idea。
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
- 修改logback.xml,将value值改为存在的文件
<property name="log.path" value="/Users/lan/Desktop/java/log/xxl-job/xxl-job.log"/>
6.因为调度中心已经支持springboot,可以直接通过springboot内置容器启动
3. 执行器配置
- xxl-job-executor-samples定义了多个执行器实例,也可以在自有的项目集成执行器配置,首先引入任务调度执行组件:
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.1</version>
</dependency>
- 我自身项目有springboot搭建 ,因此首先在yml中进行如下配置
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;
}
}
- 任务定义
/**
*@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.效果展示
总结
第一次写博客,多包涵,共勉。
附上许兄的文档地址 http://www.xuxueli.com/xxl-job/#/