博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在spring boot中3分钟上手分布式任务调度系统xxl-job
阅读量:6607 次
发布时间:2019-06-24

本文共 2889 字,大约阅读时间需要 9 分钟。

xxl-job在鼎鼎大名的任务调度系统上进行了二次封装,变得更好用了 项目地址: 官方文档:

虽然官方文档也很全,很详细,但需要多花些时间上手,以下是我根据官方文档整理出的快速上手步骤,可以减少上手需要花费的时间和一些生产使用需要注意的点

在mysql中执行以下sql

这个sql创建xxl-job的数据库和调度任务的表 记下mysql的地址,用户名和密码

使用docker一键启动调度中心

docker run -d --rm \    -e PARAMS="--spring.datasource.url=jdbc:mysql://你的mysql数据库ip:3306/xxl-job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=你的mysql数据库用户名 --spring.datasource.password=你的mysql数据库密码" \    -p 8680:8080 \    --name xxl-job-admin xuxueli/xxl-job-admin:2.0.2复制代码

在浏览器中使用默认用户名和密码 admin 123456 登陆查看效果

将一个spring boot项目变成一个xxl-job任务的执行器

在现有项目的pom.xml加上xxl-job core依赖

com.xuxueli
xxl-job-core
2.0.2
复制代码

在现有的配置文件src/main/resources/application.properties文件中添加xxl-job调度中心的配置

### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"xxl.job.admin.addresses=http://127.0.0.1:8680/xxl-job-admin### xxl-job executor addressxxl.job.executor.appname=xxl-job-executor-samplexxl.job.executor.ip=xxl.job.executor.port=9999### xxl-job, access tokenxxl.job.accessToken=### xxl-job log pathxxl.job.executor.logpath=logs/xxl-job/jobhandler### xxl-job log retention daysxxl.job.executor.logretentiondays=-1复制代码

然后在spring boot中把xxl job注册成服务,参考: 核心代码如下:

@Bean(initMethod = "start", destroyMethod = "destroy")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 boot了,一般都会在任务中调用spring boot项目的资源,比如 jpa, service, util等

在spring boot项目中创建一个测试任务,比如 TestJobHandler.java 核心代码如下

@JobHandler(value="testJobHandler")@Componentpublic class TestJobHandler extends IJobHandler {    private final InService inService;    @Autowired    public TestJobHandler(InService inService) {        this.inService = inService;    }    @Override    public ReturnT
execute(String param) throws Exception { XxlJobLogger.log("XXL-JOB, Hello World."); for (int i = 0; i < 5; i++) { XxlJobLogger.log("beat at:" + i); TimeUnit.SECONDS.sleep(2); } inService.xxl(); return SUCCESS; }}复制代码

其中inService便是spring boot中的一个普通的service

执行任务

然后在调度中心创建任务运行我们刚才创建的任务

点击启动任务,在任务执行代码中断个点查看效果

任务触发成功!

同时可以在调度中心看到执行的记录和日志

一些注意的点

调度中心的JobHandler必须和代码里的JobHandler的值一致才能匹配到执行的任务

生产环节使用要保证任务执行客户端的高可用,开启高可用参考:

调度中心也需要高可用,参考:

一般微服务都在容器里部署,容器部署需要特别注意ip地址,参考: 的配置

转载于:https://juejin.im/post/5cc59db25188252e8a038a1f

你可能感兴趣的文章
Ubuntu环境下自动定时启动任务
查看>>
UItableview
查看>>
ubuntu下virtualbox安装增强包
查看>>
【Demo】 生成二维码 和 条形码
查看>>
在update语句中使用子查询
查看>>
win8.1 开机慢 快速解决
查看>>
对vi编辑器的总结
查看>>
ssl信息和如何在openssl自建一个CA服务器
查看>>
lamp环境搭建mysql5.1+httd2.2+php5.3
查看>>
form 表单,点击按钮,自动刷新提交的bug
查看>>
Elephantbird介绍
查看>>
黑马程序员-IO流读取文件中的内容
查看>>
将shiro作为插件整合到jfinal,在jfinal里读取shiro的注解
查看>>
文件系统管理
查看>>
使用sar进行性能分析
查看>>
Android特效源码分享,看了你就赚啦!
查看>>
Android手机模拟器旋转快捷键
查看>>
Linux 修改IP地址
查看>>
shell
查看>>
如何使用Office Deployment Tool离线安装office 365
查看>>