简介:XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
这里贴上官方文档:分布式任务调度平台XXL-JOB
请下载项目源码并解压,获取 “调度数据库初始化SQL脚本” 并执行即可。
“调度数据库初始化SQL脚本” 位置为:
/xxl-job/doc/db/tables_xxl_job.sql
解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:
- xxl-job-admin:调度中心
- xxl-job-core:公共依赖
- xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
- :xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
- :xxl-job-executor-sample-frameless:无框架版本;
调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
调度中心配置文件地址:
/xxl-job/xxl-job-admin/src/main/resources/application.properties
调度中心配置内容说明:
- ### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
- spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
- spring.datasource.username=root
- spring.datasource.password=root_pwd
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- ### 报警邮箱
- spring.mail.host=smtp.qq.com
- spring.mail.port=25
- spring.mail.username=xxx@qq.com
- spring.mail.password=xxx
- spring.mail.properties.mail.smtp.auth=true
- spring.mail.properties.mail.smtp.starttls.enable=true
- spring.mail.properties.mail.smtp.starttls.required=true
- spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
- ### 调度中心通讯TOKEN [选填]:非空时启用;
- xxl.job.accessToken=
- ### 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
- xxl.job.i18n=zh_CN
- ## 调度线程池最大线程配置【必填】
- xxl.job.triggerpool.fast.max=200
- xxl.job.triggerpool.slow.max=100
- ### 调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;
- xxl.job.logretentiondays=30
部署项目:
调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)
默认登录账号 “admin/123456”, 登录后运行界面如下图所示。
在这里我就不进行springboot项目创建了我相信大家都会。
-
- <dependency>
- <groupId>com.xuxueligroupId>
- <artifactId>xxl-job-coreartifactId>
- <version>2.2.0version>
- dependency>
2:配置application.properties
- # web port
- server.port=8081
- # no web
- #spring.main.web-environment=false
- # log config
- logging.config=classpath: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, access token
- xxl.job.accessToken=default_token
- ### xxl-job executor appname
- xxl.job.executor.appname=springboot-xxl-job
- ### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
- xxl.job.executor.address=
- ### xxl-job executor server-info
- xxl.job.executor.ip=
- xxl.job.executor.port=9999
- ### xxl-job executor log-path
- xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
- ### xxl-job executor log-retention-days
- xxl.job.executor.logretentiondays=30
- /**
- * xxl-job config
- *
- * @author xuxueli 2017-04-28
- */
- @Configuration
- public class XxlJobConfig {
- private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
-
- @Value("${xxl.job.admin.addresses}")
- private String adminAddresses;
-
- @Value("${xxl.job.accessToken}")
- private String accessToken;
-
- @Value("${xxl.job.executor.appname}")
- private String appname;
-
- @Value("${xxl.job.executor.address}")
- private String address;
-
- @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.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.setAddress(address);
- xxlJobSpringExecutor.setIp(ip);
- xxlJobSpringExecutor.setPort(port);
- xxlJobSpringExecutor.setAccessToken(accessToken);
- xxlJobSpringExecutor.setLogPath(logPath);
- xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
-
- return xxlJobSpringExecutor;
- }
-
- /**
- * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
- *
- * 1、引入依赖:
- *
- *
org.springframework.cloud - *
spring-cloud-commons - *
${version} - *
- *
- * 2、配置文件,或者容器启动变量
- * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
- *
- * 3、获取IP
- * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
- */
- }
- @Component
- @Slf4j
- public class SampleXxlJob {
- private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);
-
- /**
- * 1、简单任务示例(Bean模式)
- */
- @XxlJob("demoJobHandler")
- public ReturnT
demoJobHandler(String param) throws Exception { - XxlJobLogger.log("XXL-JOB, Hello World.");
- logger.info("我执行了========================================");
- for (int i = 0; i < 5; i++) {
- XxlJobLogger.log("beat at:" + i);
- TimeUnit.SECONDS.sleep(2);
- }
- return ReturnT.SUCCESS;
- }
- }
首先配置执行器
现在就可以了,配置完之后,就可以点那个蓝色按钮启动或者停止,然后去看日志是否成功,一种是我在项目中打印了一行日志。