这几天做项目发现统计有很多定时任务需要处理,而项目中都是采用注解得方式去做导致就很分散,不是很好得去做统一管理,找起来也比较麻烦。所以就想着集成一下xxjob 做统一管理
1.什么是xxjob
xxjob是一款分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用
它支持通过Web页面对任务进行CRUD操作,操作简单
支持动态得修改任务状态,参数,即时生效
任务执行器支持集群部署
支持故障转移和动态扩容等等,,,,
源码仓库地址:
https://github.com/xuxueli/xxl-job
http://gitee.com/xuxueli0323/xxl-job
下载下来后解压用ideal 打开
mysql 执行table_xxl_job.sql脚本 这里面得一些表主要就是一些存储账户,任务日志,任务之类得
主要是启动xx-job-admin这个服务
先修改一些配置
比如数据库配置
或者端口都可以还有一些别的配置你有得话就改了玩玩
最后启动
效果图:
默认账户:admin 密码:123456
2.创建一个springboot项目
引入核心依赖 这里之所以没写版本号是因为我在父类已经统一设置好了版本
com.xuxueli xxl-job-core
然后写个demo
3.创建配置文件: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://192.168.10.111:8089/xxl-job-admin ### xxl-job, access token xxl.job.accessToken=default_token ### xxl-job executor appname xxl.job.executor.appname=test ### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null xxl.job.executor.address=http://192.168.10.111:8089/xxl-job-admin ### xxl-job executor server-info xxl.job.executor.ip=127.0.0.1 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
4.写个实体类去获取
@Configuration @Data public class XxlJobProperties { @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; }
5.创建配置去set
@Slf4j @Configuration @RequiredArgsConstructor public class XxJobConfig { private final XxlJobProperties xxlJobProperties; @Bean public XxlJobSpringExecutor xxlJobExecutor() { log.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses()); xxlJobSpringExecutor.setAppname(xxlJobProperties.getAppname()); xxlJobSpringExecutor.setAddress(xxlJobProperties.getAddress()); // xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(xxlJobProperties.getPort()); xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken()); xxlJobSpringExecutor.setLogPath(xxlJobProperties.getLogPath()); xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getLogRetentionDays()); return xxlJobSpringExecutor; }
6.最后开始写执行任务啦
@Component @Slf4j public class MyJobHandle { @XxlJob("MyJobHandler") public void execute() throws Exception { System.out.println("我成功的执行了xxjob定时任务!!!!"); } }
然后在web页面去创建执执行器和任务
创建执行器
appName按照配置来切记!!!
我这里是test
这里自动注册一直注册不上得话就手动注册 把服务IP端口写上去就行了
然后创建任务啦
保存执行就可以啦
结果图就不展示了 大家可以去试试~~~~~
上一篇:Java