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

相关推荐
神明不懂浪漫1 小时前
【第五章】Java中的继承与多态
java·开发语言
AI多Agent协作实战派3 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug
gaolei_eit3 小时前
Java+Ai+vue
java·spring·maven
qq_2518364573 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
LayZhangStrive3 小时前
JUC相关的函数、注解、变量杂记
java·面试·多线程·juc
未秃头的程序猿3 小时前
给公司做了个AI客服Agent,用的Spring AI 1.0,3天上线领导拍板了
java·后端·ai编程
曹牧3 小时前
Eclipse 批量文本替换
java·ide·eclipse
程序员清风3 小时前
OpenAI官方发布最新提示词技巧!
java·后端·面试
一只枫林3 小时前
MySQL内、外连接知识点汇总
java·前端·数据库
梅头脑4 小时前
写了3年CRUD,volatile和synchronized的区别还是答不清——直到我画出了这张三性两锁边界图
java