原创

分布式任务调度中心

xxl-jobs 版本2.3.0-SNAPSHOT

github:https://github.com/xuxueli/xxl-job

gitee:http://gitee.com/xuxueli0323/xxl-job

本文纯属开发记录,不喜欢的可以去看源码作者的开发文档

首先要创建数据库,数据库数据在:/xxl-job/doc/db/tables_xxl_job.sql

接着修改xxl-job-admin的配置文件,将数据库ip 账号 密码改成自己对应的

接着就可以运行项目了

项目运行成功可以通过访问http://127.0.0.1:8080/xxl-job-admin

初始的账号密码是admin 123456


接下来是微服务引入,我这边的微服务采用的是springboot,pom引入xxl-jobs的client

<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>{具体版本}</version>
</dependency>

微服务配置xxl-jobs信息:

import com.fccn.order.utils.SystemUntil;
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;

/**
* xxl-job config
*
* @author xuxueli 2017-04-28
*/
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
//xxl-jobs 服务端部署的地址 http://127.0.0.1:8080/xxl-job-admin @Value("${xxl.job.admin.addresses}")
private String adminAddresses;
//执行器AppName 相同服务名称要一样,服务端是以当前作为分组依据 @Value("${xxl.job.executor.appname}")
private String appName;
//当前执行器的ip地址 为空时自动获取本地ip @Value("${xxl.job.executor.ip}")
private String ip;
//当前执行器的端口 如果当前机子上面部署多个xxl-jobs 客户端,记得端口不要相同 @Value("${xxl.job.executor.port}")
private int port;
//执行器通讯TOKEN null @Value("${xxl.job.accessToken}")
private String accessToken;
//执行器运行日志文件存储磁盘路径 为空时默认/data/applogs/xxl-job/jobhandler 如果是linux系统 不是用root记得chmod 777 @Value("${xxl.job.executor.logpath}")
private String logPath;
//执行器日志文件保存天数 默认30天 @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;
}

/**
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
*
* 1、引入依赖:
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${version}</version>
* </dependency>
*
* 2、配置文件,或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/


}

微服务执行器


@Component
public class PriceExpireJobHandler extends IJobHandler {
private static final Logger logger = LoggerFactory.getLogger(PriceExpireJobHandler.class);

@XxlJob("order")
public void demoJobHandler() throws Exception {
XxlJobHelper.log("XXL-JOB, Hello World.");

// default success
}


}


xxl-jobs 服务端配置

创建执行器


创建任务




OK 大功告成!

正文到此结束