开发基础
开发基础笔记
mybatis-plus通用的service方法
通过jenkins配置前后端自动打包及发布
mybatis-plus实现分页的方式
Java极客技术公众号PDF
狂神说SpringBoot
Hashids java 版使用
SpringBoot
1、Web快速开发
2、结果集的封装
3、集成MyBatis实现数据库操作
4、Springboot @Validated参数校验
5、SpringBoot全局异常处理
6、拦截器HandlerInterceptor
7、集成Swagger实现API自动生成
8、集成knife4j实现API自动生成
9、Springboot集成MyBatis-Plus快速入门
10、springboot自定义注解及AOP切面使用
11、使用Shiro实现登陆和权限认证,基于MyBatis
12、集成SpringSecurity实现授权认证
13、SpringBoot集成EasyExcel实现数据导入与导出
14、Spring Task定时任务的实现
15、Quartz快速上手与实践
16、如何用代码实现Spring IOC
17、SpringBoot集成JWT,实现接口的鉴权交互
xxl-job 2.5.0版本集成springboot
SpringCloud
Nacos作为服务注册中心
seata1.6.1 结合springcloud实现分布锁的技术笔记
一些技术博客推荐
前端面试相关
看这一篇就够了
java.util包常用的类和接口
CountDownLatch介绍与使用
Common-lang3使用入门
Hutool简单使用入门
lombok 介绍及基本使用方法
git项目统计成员代码行数和提交的次数
mysql 逗号分隔的数据 like查询
使用sonar进行代码质量检查
线上使用jmeter进行压测的时候,使用Arthas诊断工具排查响应慢的接口
php结合phpstudy8、vscode开启xdebug进行代码调试
node-red使用入门
分享两个好用的vba宏,用于批量处理word中的表格
本文档使用 MrDoc 发布
-
+
首页
xxl-job 2.5.0版本集成springboot
## xxl-job-admin 搭建 xxl-job的运行依赖于 xxl-job-admin 所以在springboot上集成xxl-job的前提就是要安装 xxl-job-admin 有两种方式: 第一种:使用docker方式安装 xxl-job-admin 第二种: 下载代码,然后本地用idea启动或编译成jar包运行。 代码地址: https://gitee.com/xuxueli0323/xxl-job.git  xxl-job 架构图。 xxl-job-admin的代码下载好之后,切换到 2.5.0这个分支或tag。 我这里以 2.5.0这个版本为例。 导入sql。 在doc/db/tables_xxl_job.sql. 修改数据库的相关配置参数: ~~~ ### xxl-job, datasource spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ~~~ 然后启动:  我这里修改了端口,启动在了18080端口。 访问http://localhost:18080/xxl-job-admin/toLogin  账号admin 密码123456 ## 整合 SpringBoot 项目 #### 引入 maven 依赖 ~~~ <!-- xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.5.0</version> </dependency> ~~~ 此处版本要与 xxl-job-admin 中版本保持一致。 application.yml文件里增加配置: ~~~ # xxl-job xxl: job: admin: addresses: http://127.0.0.1:18080/xxl-job-admin/ # 任务中心地址 accessToken: executor: appname: my-job # 任务名称 见名之意且唯一 address: ip: port: 19999 #指定任务工程与admin工程心跳检测端口 注意该端口不是你的服务的端口,是特别指定的端口 logpath: ./logs/xxl-job/stock-job/ # 日志文件路径 logretentiondays: 30 # 日志文件保存天数 ~~~ > http://127.0.0.1:18080/xxl-job-admin/ 这个地址 不要配置错了,而且这个地址和你springboot**执行器**的项目的地址,IP要互通。 #### 添加一个配置类 XxlJobConfig ~~~ @Configuration public class XxlJobConfig { private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); @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; /** Spring整合XXL-JOB任务执行器 * 该执行器可调度当前工程下的一些子任务 */ @Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.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); return xxlJobSpringExecutor; } } ~~~ 添加一个任务类 MyJobHandler ~~~ @Component public class MyJobHandler { @XxlJob("demoJobHandler") public void execute() { System.out.println("任务执行成功!当前时间:" + new Date()); } } ~~~ 启动spring 项目。 然后进入 xxl-job-admin的控制台 进行一些配置。 1、添加执行器:  注意: my-job 这个名称,取自 application.yml的里的配置的名称。。要一致。 我这里使用了手动注册,自动注册应该也是可以的,,只是我没有注册成功。。 - 自动注册:确保上面的address的址 能通,如果是配置的127.0.0.1的这种地址,那么执行器和调控中心 得在一台机器 上,否则的话 配置成局域网或公网IP地址,也可以是域名。 2、添加任务  这里的执行器,就选择上一步 你刚刚添加的执行器,然后cron配置好,我这里配置提每10秒运行一次。。  保存之后,可以启动,也可以执行一次,然后看效果。。在springboot的控制 台 会有打印日志。 xxl-job-admin 里也可以查看每次调度的日志(上图的:查询日志),比如我这里每10秒执行一次,那么每次执行的结果 都可以查看。  - 动态添加任务 xxl-job可以通过 注入: ~~~ @Autowired(required = false) private AdminBizClient adminBizClient; ~~~ 来动态添加任务。但是注入是有条件的,需要增加相应的配置代码。 - 删除已存在的任务,这里是先查,后删 ~~~ // 执行器ID int groupId = 4; // 先删除已存在的任务 XxlJobListParam param = new XxlJobListParam(); param.setStart(0); param.setLength(10); param.setJobGroup(groupId); param.setJobDesc(JOB_GROUP_ORDERLY_LABEL + updateReqVO.getId()); param.setExecutorHandler(JobHandleConstant.ORDERLY_CHARGE); param.setTriggerStatus(1); try { ReturnT<String> str = adminBizClient.pageList(param); String content = str.getContent(); Map<String, Object> map = GsonTool.fromJson(content, Map.class); List<LinkedTreeMap> maps = (List<LinkedTreeMap>) map.get("data"); if (!CollectionUtils.isEmpty(maps)) { for (LinkedTreeMap treeMap : maps) { Double id = (Double) treeMap.get("id"); adminBizClient.removeJob(id.intValue()); } } } catch (Exception e) { log.error("删除上线任务失败,{}", e.getMessage()); } ~~~ - 新增任务 ~~~ // 新增任务 try { XxlJobInfoParam job = new XxlJobInfoParam(); job.setJobGroup(groupId); job.setJobDesc(JOB_GROUP_ORDERLY_LABEL + updateReqVO.getId()); job.setExecutorHandler(JobHandleConstant.ORDERLY_CHARGE); job.setExecutorParam(updateReqVO.getId().toString()); // 每10分钟执行一次 job.setScheduleConf("0 */10 * * * ? *"); ReturnT<String> str = adminBizClient.addJob(job); String content = str.getContent(); if (StringUtils.isNotBlank(content)) { // 开启任务 adminBizClient.startJob(Integer.parseInt(content)); } } catch (Exception e) { log.error("新增有序充电定时任务失败,{}", e.getMessage()); throw exception("新增有序充电定时任务失败"); } ~~~
superadmin
2025年10月23日 09:35
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码