分布式任务调度 xxl-job

一、为什么需要任务调度

在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题:

而且在现在分布式的架构中,有一些场景需要分布式任务调度:

显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job

二、xxl-job的下载

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

三、启动xxl-job

打包xxlJobAdmin.jar,使用命令java -jar xxlJobAdmin.jar

  1. 监控任务的情况
  2. 对任务的管理
  3. 查询调度的日志
  4. 执行器的相关管理

四、SpringBoot中配置xxl-job

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration@ConditionalOnProperty(name = "xxl.job.admin.enable", havingValue = "true")public class XxlJobConfig {    @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;    //XXL-JOB,分布式任务调度平台升级 v2.1.2 后遇到的坑XXL-JOB,分布式任务调度平台升级 v2.1.2 后遇到的坑    //把@Bean(initMethod = "start", destroyMethod = "destroy") 改成 @Bean 即可。就不会出现以上端口占用的问题!    //@Bean(initMethod = "start", destroyMethod = "destroy")    @Bean    public XxlJobSpringExecutor xxlJobExecutor() {        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;    }}

五、配置文件中往xxl-job中注册

### 是否开启xxljobxxl.job.admin.enable=true### xxl-job admin address list:调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"。xxl.job.admin.addresses=http://127.0.0.1:9090/xxl-job-admin### xxl-job executor address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP,手动设置IP时将会绑定Host。单机部署多个执行器时,注意要配置不同执行器端口;xxl.job.executor.appname=xxl-job-executor-samplexxl.job.executor.ip=xxl.job.executor.port=9999### xxl-job, access token:执行器通讯TOKEN,非空时启用xxl.job.accessToken=### xxl-job log path:执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限xxl.job.executor.logpath=### xxl-job log retention days:执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效;xxl.job.executor.logretentiondays=-1

六、SpringBoot中配置xxl-job的JobHandler

/*** * 日志文件 */@Slf4j@Componentpublic class ScheduleLog {    @XxlJob("logJobHandlelr")    public ReturnT execute(String param) {      //此处处理定时调度的任务逻辑        return ReturnT.SUCCESS;    }}

展开阅读全文

页面更新:2024-05-05

标签:分布式   集群   端口   架构   地址   文件   平台   信息   中心   日志

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top