springboot 构建elasticJob定时任务模块

一般来说,项目的定时任务会写在一个子模块,单独打包部署。
在springboot中使用elasticJob是非常简单的。

一、新建子模块

定时任务的模块我一般命名为job。
子模块的pom.xml引入相关依赖和工具。


        
            org.springframework.boot
            spring-boot-starter
        


        
            com.toufudragon
            newcomer-server
            0.0.1-SNAPSHOT
        


        
            com.dangdang
            elastic-job-lite-spring
            2.1.5
        
        
            org.apache.curator
            curator-framework
            2.12.0
        
        
            com.101tec
            zkclient
            0.10
        
    

    
        

            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

二、写定时任务

编写定时任务,此处以实现SimpleJob接口为例子,主要是实现SimpleJob的execute()方法。


springboot 构建elasticJob定时任务模块_第1张图片

三、写xml配置文件

springboot还写xml配置文件好像很奇怪,但使用elasticJob的话我还是倾向这种方式。
在resources下新建spring-elasticjob.xml文件,文件内容:



    
    

    
    

注意:server-lists的值我是从远程配置中心引进来的,所以才这么写,其实就是写zookeeper的地址:端口号。还有就是当你第一次在zookeeper注册了定时任务时,它会将该任务的参数如cron表达式,sharding-total-count等保存在它内部,以后调用时直接用它内部的参数值,这时即使你改了cron表达式再启动定时任务,这个定时任务的执行时间还是原来的值。解决方式就是加上overwrite = true,zookeeper每次都读取最新的参数。或者每次修改定时任务参数后把id改一下(比如第一次id是job,第二次是job-v2)。

四、启动类加上注解

@SpringBootApplication(scanBasePackages = ["com.toufudragon.newcomer.*"])
// @EnableApolloConfig是为了引入远程配置中心的参数
@EnableApolloConfig
// @EnableDubboConfiguration server模块用了dubbo
@EnableDubboConfiguration
// @ImportResource 告诉springboot读取该xml
@ImportResource("spring-elasticjob.xml")
open class NewcomerJobApplication

fun main(args: Array) {
    val run = runApplication(*args)

}

你可能感兴趣的:(springboot 构建elasticJob定时任务模块)