系列文章目录
第一章 – 分布式定时任务框架ElasticJob之JavaApi整合Simple作业
第二章 – 分布式定时任务框架ElasticJob之JavaApi整合DataflowJob作业
第三章 – 分布式定时任务框架ElasticJob之Spring框架整合SimpleJob作业
第四章 – 分布式定时任务框架ElasticJob之Spring框架整合DataflowJob作业
第五章 – 分布式定时任务框架ElasticJob之SpringBoot整合SimpleJob作业(实战一)
前言
上一节我们实现了zookeeper注册中心自动装配,本节我们介绍SimpleJob作业如何自动注册进JobScheduler,并启动SpringBoot时让定时任务跑起来。
一、新建一个SimpleJob任务
需要继承SimpleJob接口,在execute方法里写业务代码,需要定时执行的业务逻辑
二、编写@ElasticSimpleJob注解
写这个注解的目的是,我们可以在我们的SimpleJob任务上加这个注解,通过下文编写的SimpleJobAutoConfig(SimpleJob自动配置类)通过这个注解获取到所有使用这个注解的SimpleJob类,从而一次性将这些类注册进JobScheduler,在autoconfi包下新建一个ElasticSimpleJob注解文件,定义相关定时任务变量
在MySimpleJob上写上@ElasticSimpleJob注解
三、新建SimpleJob自动配置类
实现SimpleJob类型任务自动配置
使用Java反射完成作业注册,这步的目的是将新建的定时任务实现类注册进JobScheduler,只有这样定时任务才会生效,且项目启动后就会生效。代码注释写的很详细,完整代码会放在github。
四、启动SpringBoot项目
发现项目启动时报错,原来我没有启动zookeeper,去启动zookeeper,进入zookeeper安装包bin目录,双击zkServer.cmd启动zookeeper
然后重新启动SpringBoot,发现又报了另一个错:
意思大概是zookeeper协调注册中心没有注入进来,然后考虑到SimpleJobAutoConfig不一定是在zookeeperAutoConfig后面执行的,因此我们在SimpleJobAutoConfig加上注解@AutoConfigureAfter(ZookeeperAutoConfig.class),保证在zookeeperAutoConfig后执行,此外我们需要在spring.factories配置文件中加上SimpleJobAutoConfig路径,因为SimpleJobAutoConfig也是放在autoconfig包下,启动类扫不到这个包,我们需要在spring.factories配置文件中加上SimpleJobAutoConfig,让spring知道它在哪里。
再次启动,发现启动成功,但是debug发现使用@ElasticJobSimple的注解的bean是0
意味着没有获取到使用这个注解的类,那么为啥没获取到呢?我们是通过spring上下文获取的,没有实例化的类是获取不到的,因此我们在MySimpleJob类上加上@Component注解,让它实例化,就可以获取到。
定时任务也在跑了:
总结
完整代码可点击此处下载。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/71702.html