img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

1.3运行结果

2023.12.7—更新一波定时任务修改表字段

1.1注册任务,添加一个改动字段的job,简单的业务方法如下

1.2管理页面配置job执行器,调度类型这里因为只是手动执行一次,不选也无妨

1.3 运行结果,看到执行结果。再去检查下库

1.4 使用场景

官方文档:


早已听闻XxllJob定时任务的大名,今天自己到本地测试下

1.git 拉取代码库到本地

xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。icon-default.png?t=N7T8http://gitee.com/xuxueli0323/xxl-job

2.回车,下载好后用Idea打开,从这个目录打开
3.初始化数据库

执行数据库脚本,地址在包中这个位置

4.修改配置文件中数据库的配置信息,换成自己的

5.启动项目,右键运行此文件
6.项目成功启动后,访问网址,进入管理页面

调度中心访问地址:http://localhost:8080/xxl-job-admin

默认登录账号 “admin/123456”

7.逃不掉的 Hello World

核心配置:


            com.xuxueli
            xxl-job-core
            2.3.1
       

可以另外找个项目,进行测试,配置信息如下

  • 新建springboot项目步骤

xxl.job.accessToken=default_token
xxl.job.admin.address=http://127.0.0.1:8080/xxl-job-admin
xxl.job.executor.address=
xxl.job.executor.appname=jpbhandel
xxl.job.executor.ip=#本机ip地址
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
xxl.job.executor.logretentiondays=30
xxl.job.executor.port=9998

配置分析

  • xxl.job.accessToken:XXL-JOB 的访问令牌,用于鉴权验证,默认为 default_token。
  • xxl.job.admin.address:XXL-JOB Admin 的地址,即任务调度中心的访问地址,例如 http://172.19.6.66:8080/xxl-job-admin。(中间的ip为启动xxljob-admin项目的机器ip)")
  • xxl.job.executor.address:执行器的地址,即当前执行器机器的 IP 地址+端口号,例如 192.168.166.6:9998。如果不填写则会自动获取当前执行器机器的 IP 地址和默认端口号。(也就是当前启动的个人项目机器ip)
  • xxl.job.executor.appname:执行器的应用名称,用于在任务调度中心进行区分,例如 jpbhandel。
  • xxl.job.executor.ip:执行器的 IP 地址,如果不填写则会自动获取当前执行器机器的 IP 地址。
  • xxl.job.executor.logpath:执行器的日志路径,指定执行器日志的存储路径,例如 /data/applogs/xxl-job/jobhandler。
  • xxl.job.executor.logretentiondays:执行器的日志保留天数,指定执行器日志的保留天数,超过指定天数的日志将被清理,默认为 30 天。
  • xxl.job.executor.port:执行器的端口号,指定执行器监听的端口号,默认为 9998。

8.XxlJob配置类,固定的直接用
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import com.xxl.job.core.util.IpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    @Value("${xxl.job.admin.address}")
    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;

    @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(IpUtil.getIp());
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }
}

9.测试任务类
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Component

public class AssetsTask {
    private static Logger logger = LoggerFactory.getLogger(AssetsTask.class);

    @XxlJob("testJobHandler")
    public void demoJobHandler() throws Exception{
        XxlJobHelper.log("XXL_JOB,run successfully.");
        System.out.println("XXL_JOB:Hello WOrld." + LocalDateTime.now());
    }

}
10.启动当前项目,出现这种提示说明链接成功

11.添加执行器
(1)调度中心选择,appname对应的是配置文件中的属性,选择自动注册,地址就不用手动填了

(2).点击保存后,刷新页面,显示添加成功
12.添加任务,这里选择spring bean 方式,jobHandler 就是方法注册的bean名称,其他信息正常填写

13.执行测试,可以选择执行一次,则立即触发,或者选择启动,但是需要根据自己配制的cron表达式触发。控制台可以看到成功打印了信息

基础操作就这些了,后面可以看官方文档再玩玩

后续
2023.12.4-----更新一波带参数的定时任务操作方法
1.1在原有代码上的改动,多了一个job参数获取

1.2管理页面的改动,这两个位置在哪里改都可以,1这里的机器地址因为是勾选了自动注册的所以不用填写

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

片转存中…(img-8UIbd4mr-1715892551962)]
[外链图片转存中…(img-EivkeAmQ-1715892551962)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐