主页 > 人工智能  > 

springboot使用XxlJob定时任务框架

springboot使用XxlJob定时任务框架

XxlJob是目前最流行的分布式定时任务中间件,对比quartz,代码的侵入明显少了很多,不需要每次在代码里配置job, 而XxlJobd的admin server组件提供了可视化ui, 对job和执行器能够从前端页面配置管理,简单易用,目前已经接入几百家互联网公司使用,XxlJob的强大任务调度能力为广大开发者和企业所认可

本文讲解springboot如何部署使用xxljob定时任务框架以及使用方法

一、下载xxljob源码

下载地址: github /xuyuadmin/xxljob

下载压缩包后进行解压;解压后的目录:

选择doc目录-db,招到sql文件 tables_xxl_job.sql,该表为xxljob配置表

把该表导入到数据库中,最终效果如下:

二、xxljob编译打包成可用部署包

1、用编译器打开解压的文件,进入源码目录,如图所示,这儿我们只需要打开xxl-job-admin,这个文件才是我们要使用的主要文件

2、找到配置文件,配置一下参数,用于后续接入使用

### web server.port=8081 #管理后台进入端口 server.servlet.context-path=/xxl-job-admin #管理后台进入路径 ### actuator management.server.base-path=/actuator management.health.mail.enabled=false ### resources spring.mvc.servlet.load-on-startup=0 spring.mvc.static-path-pattern=/static/** spring.web.resources.static-locations=classpath:/static/ ### freemarker spring.freemarker.templateLoaderPath=classpath:/templates/ spring.freemarker.suffix=.ftl spring.freemarker.charset=UTF-8 spring.freemarker.request-context-attribute=request spring.freemarker.settings.number_format=0.########## spring.freemarker.settings.new_builtin_class_resolver=safer ### mybatis mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml #mybatis.type-aliases-package=com.xxl.job.admin.core.model ### xxl-job, datasource spring.datasource.url=jdbc:mysql://xxxx:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai #数据库连接地址(导表的数据库连接地址) spring.datasource.username=xxxx #数据连接账号 spring.datasource.password=xxxx #数据库连接密码 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ### datasource-pool spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.maximum-pool-size=30 spring.datasource.hikari.auto-commit=true spring.datasource.hikari.idle-timeout=30000 spring.datasource.hikari.pool-name=HikariCP spring.datasource.hikari.max-lifetime=900000 spring.datasource.hikari.connection-timeout=10000 spring.datasource.hikari.connection-test-query=SELECT 1 spring.datasource.hikari.validation-timeout=1000 ### xxl-job, email spring.mail.host=smtp.qq #qq邮箱地址 spring.mail.port=25 spring.mail.username=xxx #邮箱账号 spring.mail.from=xxx #邮箱账号 spring.mail.password=xxx #邮箱密码 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory ### xxl-job, access token xxl.job.accessToken=xxxxx #接入token,这儿在后端接入的时候需要填入该token ### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en") xxl.job.i18n=zh_CN ## xxl-job, triggerpool max size xxl.job.triggerpool.fast.max=200 xxl.job.triggerpool.slow.max=100 ### xxl-job, log retention days xxl.job.logretentiondays=30

三、配置完成后进行编译打包

首先进入maven,预先下载相关package;打开pom.xml文件,下载更新package

更新完成后就可以进行编译打包了,这儿根据自己需求是编译成war包还是jar包,同样在pom.xml文件里进行设置

配置完成后进行打包操作,打包完成后得到jar或war包

三、部署配置

1、把打包好的包复制出来,如果是war包需要部署到tomcat上,如果是jar包可以直接部署在服务器上启动后可开始访问(jar包启动后端口是配置文件里填写的端口,上面写的8081,所以该端口为8081,如果是部署在Tomcat上则以Tomcat端口为准)

2、部署完成后就可开始访问,以jar包部署为例,如果部署到本地,访问地址为:http://127.0.0.1:8081/xxl-job-admin/toLogin

3、访问结果如下:

初始账号密码为:admin / 123456

到此,xxljob服务端已经部署完成,可在后端接入使用了

四、springboot配置

1、后端接入时需要先导入相关package,进入pom.xml文件,导入以下包

<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.4.1</version> </dependency>

2、创建配置文件 

package com.wm.bean; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Log4j2 @Configuration public class XxlJobConf { //部署的地址 @Value("${xxl.job.admin.addresses}") private String adminAddresses; //接入token,配置文件中填写的token @Value("${xxl.job.accessToken}") private String accessToken; //接入服务的包名,比如后端代码包名 @Value("${xxl.job.executor.appName}") private String appname; //接入地址,与上面adminAddresses任选其一 @Value("${xxl.job.executor.address}") private String address; //接入地址ip,与上面adminAddresses任选其一 @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; @Bean public XxlJobSpringExecutor xxlJobExecutor() { log.info("==> xxl-job config init"); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppname(appname); xxlJobSpringExecutor.setAddress(address); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); log.info("==> xxl-job config end"); return xxlJobSpringExecutor; } }

配置文件yaml方式:

xxl: job: admin: addresses: http://127.0.0.1:8081/schedule executor: address: appName: wmApi ip: port: 9998 logPath: /data/xxl-job-log/jobhandler logRetentionDays: 7 accessToken: xxxx

2、使用方法,在service层需要执行任务的方法上添加

@XxlJob("WatchMQStatus") 注解,里面参数为bean名称,这名称在配置时需要

列如:

五、xxljob配置页面配置及其使用

1、等所有配置完成后进入配置管理页面(xxl部署启动完成,后端服务部署启动完成)

2、进入执行器管理,该执行器为自行注册,无需手动接入(后端服务只要正常接入就会自动注册,也可手动新增)

手动新增:appname为后端服务配置文件中配置的appname,上面提到过,名称随意填;注册方式如果为自动注册时,只要检测到后端服务接入且名称AppName一样时就会自动接入,手动注册需要手动填入xxl部署地址

正常接入后可以看到,地址上已接入

3、任务管理-新增任务

主要填写点为执行器(执行器为对应接入的后端服务,如果选错,执行定时任务时会导致找不到对应的bean而执行报错)、JobHandler(上面讲的@XxlJob注解里面的bean名称)、调度类型(可选择触发时机,固定触发或定时触发,常用为cro时间表达式),都填写完成后保存即可

也可手动主动触发/启用/停用、以及一些其他功能

查看调度日志(执行日志)

标签:

springboot使用XxlJob定时任务框架由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“springboot使用XxlJob定时任务框架