一、为什么需要任务调度
在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题:
而且在现在分布式的架构中,有一些场景需要分布式任务调度:
显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job
二、xxl-job的下载
https://github.com/xuxueli/xxl-job/
三、启动xxl-job
打包xxlJobAdmin.jar,使用命令java -jar xxlJobAdmin.jar
四、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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号