XXL定时任务:通过具体案例xxljob本地化布置与测试(持续更新不同案例)

目录

1.git 拉取代码库到本地

2.回车,下载好后用Idea打开,从这个目录打开

​编辑3.初始化数据库

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

5.启动项目,右键运行此文件

6.项目成功启动后,访问网址,进入管理页面

7.逃不掉的 Hello World

8.XxlJob配置类,固定的直接用

9.测试任务类

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

11.添加执行器

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

  (2).点击保存后,刷新页面,显示添加成功

12.添加任务,这里选择spring bean 方式,jobHandler 就是方法注册的bean名称,其他信息正常填写​编辑

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

后续

2023.12.4-----更新一波带参数的定时任务操作方法

1.1在原有代码上的改动,多了一个job参数获取

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

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

核心配置:   

        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.3.1</version>
        </dependency>

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

  • 新建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这里的机器地址因为是勾选了自动注册的所以不用填写

1.3运行结果

        可以看到成功接收到job参数并且打印

2023.12.7---更新一波定时任务修改表字段
1.1注册任务,添加一个改动字段的job,简单的业务方法如下

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

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

1.4 使用场景

       因为系统下面分为多个项目,每个项目有单独的数据库,所有项目信息维护在主库main中,现在需求有改动,所有项目下的某个表要新增或删除字段,就可以通过该种途径实现,将项目库的信息全部查出来保存到集合中,循环遍历切换到每个项目库,执行ddl操作,为什么不直接在本地跑一下sql语句?因为本地是可以这样做的,但到了生产环境没权限额,只能抛出一个接口,然后查看任务的日志即可。

官方文档:

分布式任务调度平台XXL-JOB

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
根据引用和引用的内容,出现错误"AttributeError: module 'distutils' has no attribute 'version'"的原因是setuptools版本问题。可以按照以下解决方案进行处理: 1. 打开对应的环境。 2. 输入以下代码卸载setuptools:pip uninstall setuptools。 3. 安装较旧版本的setuptools:pip install setuptools==59.5.0。 这样就可以解决美团yolov6报错"AttributeError: module 'distutils' has no attribute 'version'"的问题了。123 #### 引用[.reference_title] - *1* [YOLOV7:AttributeError: module ‘distutils‘ has no attribute ‘version‘ 的解决方案](https://blog.csdn.net/xty123abc/article/details/125862656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [AttributeError: module ‘distutils‘ has no attribute ‘version‘解决跑pytorch代码报错](https://blog.csdn.net/qq_42076902/article/details/129261266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [AttributeError: module ‘distutils‘ has no attribute ‘version](https://blog.csdn.net/hahhahahhaja/article/details/128003170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在比萨斜塔吃披萨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值