欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

Spring Boot和XXLJob高效定时任务管理,springboot定时任务

终极管理员 知识笔记 60阅读

itee】

2️⃣【github】

♉️上面的github和gitee都可以选择然后拉取下来

修改拉取的配置

1️⃣执行拉取下来的sql/xxl-job/doc/db/tables_xxl_job.sql

2️⃣修改调度中心配置/xxl-job/xxl-job-admin/src/main/resources/application.properties

### web端口这里我修改了默认是8080server.port9998# 修改连接数据库配置spring.datasource.urljdbc:mysql://127.0.0.1:3361/xxl_job?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&serverTimezoneAsia/Shanghaispring.datasource.usernamerootspring.datasource.password123456### xxl-job, access token注意这里的accessToken在执行器中也需要配置(一致)xxl.job.accessTokeneyJhbGciOiJIUzI1NiJ9

3️⃣修改/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml否则可能会报错

<!-- 这里需要修改的值如下不然会找不到日志路径--><property namelog.path value./logs/xxl-job-admin.log/>

4️⃣访问

到这里调度中心就配置好了

配置执行器

这里其实刚刚拉取的项目下就涵盖了执行器包括无框架的以及springboot框架的

自己的项目如何整合 maven依赖
<dependency>  <groupId>com.xuxueli</groupId>  <artifactId>xxl-job-core</artifactId>  <version>2.4.0</version></dependency>
properties文件配置
### 调度中心部署根地址 [选填]如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行执行器心跳注册和任务结果回调为空则关闭自动注册这里的ip也是上面调度中心的xxl.job.admin.addresses 执行器通讯TOKEN [选填]非空时启用这里的密码是上面调度中心的xxl.job.accessTokeneyJhbGciOiJIUzI1NiJ9### 执行器AppName [选填]执行器心跳注册分组依据为空则关闭自动注册xxl.job.executor.appnamexxl-job-executor-xiaobo### 执行器注册 [选填]优先使用该配置作为注册地址为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。xxl.job.executor.address### 执行器IP [选填]默认为空表示自动获取IP多网卡时可手动设置指定IP该IP不会绑定Host仅作为通讯实用地址信息用于 执行器注册 和 调度中心请求并触发任务xxl.job.executor.ip### 执行器端口号 [选填]小于等于0则自动获取默认端口为9999单机部署多个执行器时注意要配置不同执行器端口xxl.job.executor.port9999### 执行器运行日志文件存储磁盘路径 [选填] 需要对该路径拥有读写权限为空则使用默认路径xxl.job.executor.logpath./logs/xxl-job/jobhandler### 执行器日志文件保存天数 [选填]  过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能xxl.job.executor.logretentiondays30
执行器组件配置
package com.todoitbo.baseSpringbootDasmart.config;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;import org.springframework.beans.factory.annotation.Value;import lombok.extern.slf4j.Slf4j;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * author xiaobo * date 2023/10/24 */ConfigurationSlf4jpublic class XxlJobConfig {    Value(${xxl.job.admin.addresses})    private String adminAddresses;    Value(${xxl.job.executor.appname})    private String appname;    Value(${xxl.job.executor.ip})    private String ip;    Value(${xxl.job.executor.port})    private int port;    Value(${xxl.job.accesstoken})    private String accessToken;    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.setIp(ip);        xxlJobSpringExecutor.setPort(port);        xxlJobSpringExecutor.setAccessToken(accessToken);        xxlJobSpringExecutor.setLogPath(logPath);        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);        return xxlJobSpringExecutor;    }}
jobhandler配置
package com.todoitbo.baseSpringbootDasmart.handler;import com.xxl.job.core.context.XxlJobHelper;import com.xxl.job.core.handler.annotation.XxlJob;import org.springframework.stereotype.Component;/** * author xiaobo * date 2023/10/24 */Componentpublic class JobHandler {    XxlJob(demoJobHandler)    public void demoJobHandler() throws Exception {        XxlJobHelper.log(XXL-JOB, Hello World.);    }}

拉取下来的代码中/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/java/com/xxl/job/executor/service/jobhandler/SampleXxlJob.java是更详细的配置

实现效果

1️⃣启动项目出现如下即成功

2️⃣任务调度页面中加入执行器

3️⃣配置任务

4️⃣启动任务

⚠️这里如果你要执行一次的话机器地址一定是带http的比如

如果是启动的话先点击注册节点再启动即可

第三XxlJob中参数详解

以下是这三个参数的详细说明

value:

参数类型: String说明: 任务的名字必须是唯一的。在XXL-Job Admin中配置任务时这个值用于标识任务。

init:

参数类型: String说明: 任务初始化时的方法名。这个方法会在任务第一次执行前被调用通常用于初始化一些资源。方法必须是无参数的。

destroy:

参数类型: String说明: 任务销毁时的方法名。这个方法会在任务最后一次执行后被调用通常用于释放资源。方法必须是无参数的。

这三个参数是XxlJob注解的基本参数用于定义任务的基本属性。

第四最佳实践

使用Spring Boot和XXL-Job进行任务调度是一种强大的方式但也有一些常见的错误和最佳实践以下是一些建议帮助读者避免这些错误并在实际项目中取得成功

详细记录任务日志

记录任务的执行日志是非常重要的它可以帮助你追踪任务的执行情况及时发现问题。确保在任务Handler中添加详细的日志信息。

参数校验

在任务Handler中对传递的参数进行合法性校验以避免不必要的异常和错误。

任务幂等性

确保任务的逻辑是幂等的即多次执行不会产生不同的结果。这对于任务失败后的重试非常重要。

失败处理

配置任务的失败处理策略包括重试次数、重试间隔等。这可以帮助应对临时问题如网络故障或资源不足。

任务依赖

如果任务之间存在依赖关系确保在XXL-Job Admin中正确配置任务的依赖关系以保证任务按照正确的顺序执行。

动态调度

利用XXL-Job的动态调度功能来应对实时需求的变化如动态调整任务触发时间、任务取消、任务延迟等。

监控与报警

集成监控和报警系统可以帮助你实时监测任务的执行情况及时发现问题并采取措施。XXL-Job提供了与监控系统的集成支持。

版本管理

使用版本控制工具如Git来管理任务Handler代码以便跟踪任务逻辑的变化和恢复历史版本。

测试任务逻辑

在开发任务Handler时进行充分的单元测试确保任务逻辑的正确性。XXL-Job提供了一些测试工具如JobLogger。

集群部署

如果需要部署XXL-Job执行器节点以提高任务的可用性和负载均衡。

版本升级

定期关注XXL-Job的更新版本确保使用最新的稳定版本以获得最新的功能和 bug 修复。

安全性

保护XXL-Job Admin的访问权限防止未经授权的访问。不要在任务逻辑中存储敏感信息。

文档和培训

提供适当的文档和培训以便项目团队了解如何使用XXL-Job和任务调度最佳实践。

遵循这些最佳实践可以帮助你更好地使用Spring Boot和XXL-Job确保任务调度系统的可靠性和稳定性。这对于生产环境中的任务调度至关重要。

标签:
声明:无特别说明,转载请标明本文来源!