SpringClout 引用 xxjob定时任务

SpringClout 引用 xxjob定时任务

下载源码

分布式任务调度平台XXL-JOB-官网地址
源码地址

组成部分

调度中心

作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
公共依赖

xxl-job-core
执行器

作用:负责接收"调度中心"的调度并执行;可直接部署执行器,也可以将执行器集成到现有业务项目中。

调度中心使用步骤

修改调度中心配置

位置:/xxl-job/xxl-job-admin/src/main/resources/application.properties

配置解释

java 复制代码
### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
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=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 报警邮箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
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
### 调度中心通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
### 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
xxl.job.i18n=zh_CN
## 调度线程池最大线程配置【必填】
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### 调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;
xxl.job.logretentiondays=30

启动验证

1.启动类启动

2.登录网址:http://localhost:8080/xxl-job-admin/jobinfo

3.admin 123456 (登录密码也可在数据库中自定义)

执行器使用步骤

修改执行器配置

1.引入依赖

复制代码
<!-- xxl-job-core -->
<dependency>
    <groupId>com.lazzen.cloud</groupId>
    <artifactId>cloud-xxl-job-core</artifactId>
</dependency>

2.修改配置

java 复制代码
#调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
#执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
#执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-sample
#执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 "IP:PORT" 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
#执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
#执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
#执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
#执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30

执行器组件配置

执行器组件,配置文件地址:XxlJobConfig.java

java 复制代码
    @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;
    }

启动

创建定时任务

创建任务代码

此处的业务逻辑就遵循三层架构没有什么特别之处

java 复制代码
@Slf4j
@Component
@AllArgsConstructor
public class xxjobTest {

    private final OamTimingAirconditionService oamTimingAirconditionService;

    /**
     * 定时分合闸处理器
     */
    @XxlJob("demoJobHandler")
    public void lightingGateway() {
        XxlJobHelper.log("定时任务开始执行.....");
        // 读取参数
        String param = XxlJobHelper.getJobParam();
        if (param == null || param.trim().isEmpty()) {
            // 参数错误
            XxlJobHelper.log("param[" + param + "] invalid.");
            XxlJobHelper.handleFail();
            return;
        }
        try {
            // 业务逻辑
            XxlJobHelper.handleSuccess();
        } catch (Exception ex) {
            log.error(ex.getMessage(), ex);
            XxlJobHelper.log(ex);
            XxlJobHelper.handleFail();
        }finally {
            DynamicDataSourceExt.clearCustomIdThreadLocal();
        }
        XxlJobHelper.log("定时任务执行结束!");
    }
}

附加已有项目调用xxjob API

相关推荐
专吃海绵宝宝菠萝屋的派大星4 分钟前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟22 分钟前
操作系统之虚拟内存
java·服务器·网络
Tong Z24 分钟前
常见的限流算法和实现原理
java·开发语言
凭君语未可27 分钟前
Java 中的实现类是什么
java·开发语言
He少年29 分钟前
【基础知识、Skill、Rules和MCP案例介绍】
java·前端·python
克里斯蒂亚诺更新39 分钟前
myeclipse的pojie
java·ide·myeclipse
迷藏4941 小时前
**eBPF实战进阶:从零构建网络流量监控与过滤系统**在现代云原生架构中,**网络可观测性**和**安全隔离**已成为
java·网络·python·云原生·架构
迷藏4941 小时前
**发散创新:基于Solid协议的Web3.0去中心化身份认证系统实战解析**在Web3.
java·python·web3·去中心化·区块链
qq_433502181 小时前
Codex cli 飞书文档创建进阶实用命令 + Skill 创建&使用 小白完整教程
java·前端·飞书
safestar20121 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins