小工具      在线工具  汉语词典  css  js  c++  java

xxl-job入门教程

分布式,java,spring boot 额外说明

收录于:40天前

xxl-job的基本使用

xxl-job是分布式的调度平台调度执行器执行任务,使用的是DB锁(for update)来保证集群分布式调用的一致性,学习简单,操作容易,成本不高。

  • 准备阶段
  • 服务器配置
  • 基本使用

1. 准备阶段

源码仓库地址:https://github.com/xuxueli/xxl-job

xxl-job-admin:调度中心,统一管理任务调度平台上的调度任务,负责触发调度执行,提供任务管理平台。

xxl-job-core:从调度中心接收调度并执行,公共jar包。

xxl-job-executor-samples:服务器端,这里展示的是xxl-job的演示案例

  • 执行xxl-job准备好的sql

  • 修改admin模块中的数据库连接并启动模块,实现jar包部署。

  • http://localhost:8080/xxl-job-admin 默认帐户密码:admin/123456

2. 服务端配置

  • 介绍xxl-job的starter
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${
    版本}</version>
</dependency>
  • 配置文件
xxl:
  job:
    # 执行器开关
    enabled: true
    # 调度中心地址:如调度中心集群部署存在多个地址则用逗号分隔。
    admin-addresses: http://localhost:8080/xxl-job-admin
    # 执行器通讯TOKEN:非空时启用
    access-token: default_token
    # 执行器配置
    executor:
      # 执行器AppName:执行器心跳注册分组依据;为空则关闭自动注册
      appname: demo-executor
      # 执行器端口号 执行器从19901开始往后写
      port: 9901
      # 执行器注册:默认IP:PORT
      address:
      # 执行器IP:默认自动获取IP
      ip:
      # 执行器运行日志文件存储磁盘路径
      logpath: ./logs/${
    spring.application.name}/xxl-job
      # 执行器日志文件保存天数:大于3生效
      logretentiondays: 30

客户端需要配置的执行器就是这里的executor,页面的AppName对应的就是demo-executor,名称随意填写

注册方式如果选择自动注入,服务端又没有配置的话就会自动读取服务端的地址,手动录入就是手动输入服务端的地址,就是executor中配置的ip和port

这里的access-token执行器通讯TOKEN,非空时启用,启动的话需要跟admin模块application.yml的配置文件中的token保持一致

### xxl-job, access token
xxl.job.accessToken=default_token
  • 注入豆子
@Data
@ConfigurationProperties(prefix = "xxl.job")
public class XxlJobProperties {
    

    private Boolean enabled;

    private String adminAddresses;

    private String accessToken;

    private Executor executor;

    @Data
    @NoArgsConstructor
    public static class Executor {
    

        private String appname;

        private String address;

        private String ip;

        private int port;

        private String logPath;

        private int logRetentionDays;
    }
}
@EnableConfigurationProperties(XxlJobProperties.class)
@AutoConfiguration
@AllArgsConstructor
@ConditionalOnProperty(prefix = "xxl.job", name = "enabled", havingValue = "true")
@Slf4j
public class XxlJobConfig {
    

    private final XxlJobProperties xxlJobProperties;

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
    
        log.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());
        xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken());
        XxlJobProperties.Executor executor = xxlJobProperties.getExecutor();
        xxlJobSpringExecutor.setAddress(executor.getAddress());
        xxlJobSpringExecutor.setIp(executor.getIp());
        xxlJobSpringExecutor.setPort(executor.getPort());
        xxlJobSpringExecutor.setLogPath(executor.getLogPath());
        xxlJobSpringExecutor.setLogRetentionDays(executor.getLogRetentionDays());
        return xxlJobSpringExecutor;
    }
}

3. 基本使用

这里我们用最简单的方式,利用注解来执行定时任务。

  • 定时任务的业务逻辑
@Service
@Slf4j
public class JobService {
    

    @XxlJob(value = "demoJobHandler", init = "init", destroy = "destroy")
    public void demoJobHandler2() throws Exception {
    
        System.out.println("欢迎来到定时任务");
        XxlJobHelper.log("XXL-JOB, Hello World.");
        for (int i = 0; i < 5; i++) {
    
            XxlJobHelper.log("beat at:" + i);
        }
        // default success
    }

    // 初始化执行
    public void init() {
    
        log.info("init");
    }

    // 销毁执行
    public void destroy() {
    
        log.info("destory");
    }

}
  • 添加新任务

- 执行器: 选择刚刚自定义好的执行器
- 调度类型: 选择定时任务的执行方式
- Cron: 定时任务的执行周期
- 运行模式: 如果我们使用的是注解的方式,就选择BEAN类型
- JobHandler: 就设置成服务端@XxlJob(value = "demoJobHandler")这里面的值
  • 实施

执行一次意味着只执行一次。启动是指按照设定的执行周期启动定时任务。

更详细的使用请参见官方文档:https://www.xuxueli.com/xxl-job/

. . .

相关推荐

额外说明

mac安装软件提示损坏问题的解决方法

打开终端,输入如下命令 sudo xattr -r -d com.apple.quarantine 把程序拖拽进去,然后回车

额外说明

Ora2Pg 工具介绍

文章目录 官方地址:http://ora2pg.darold.net Ora2Pg 是一个免费工具,用于将 Oracle 或者 MySQL 数据库迁移到 PostgreSQL。它通过连接 Oracle 数据库,执行自动扫描并且提取数据库的结构和数据,然后

额外说明

V3-04 : 利用ssm, ajax实现动态页面

目录 使用ajax ajax小结: (复习) CROS介绍 [不完整,等待整改] 1.SpringMvc 常用规则 2. 请求方式: get/post/put/delete get: 查询  post : form表单提交 put: 修改操作 delet

额外说明

实战篇:Oracle 配置透明网关访问 MySQL 详细教程

前言 从 Oracle 无法直接访问 Mysql 数据库,需要配置透明网关后通过 DBLink 实现访问。 今天搞了一下午透明网关配置,流程比较复杂,并且有一些坑,这不立刻来给大家排排坑,说不定以后就用的着呢! 废话不多说,直接实战走起~ 一、环境准备

额外说明

【Unity3D软硬件】Unity3D 与串口的通信程序的开发,软件硬件结合

推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、C#串口介绍以及简单串口通信程

额外说明

VC++图片类型之间的相互转换(附源码)

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新.

额外说明

云原生微服务治理经典套件之Spring Cloud Alibaba核心技术与实战案例

系列文章目录 送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 文章目录 系列文章目录 1、云原生如何做微服务治理? 2

额外说明

解决Excel无法打开文件“xxx.xlsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式!匹配的问题

文章目录 1. 复现错误 2. 分析错误 3. 解决错误 1. 复现错误 今天在开发过程中,测试指给我一个bug,如下图所示: 于是,我拿到这个文件标准模板.xlsx,尝试使用WPS打开看看,如下图所示: 如上图所示,使用WPS可以打开,但使用offic

额外说明

解决丢失找不到mfc120u.dll文件问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个mfc120u.dll文件进行安装(前提是找到适合的版本),当

额外说明

js自定义页眉和页脚_轻松为每个类别添加自定义页眉,页脚或侧边栏

js自定义页眉和页脚 您是否见过 WordPress 博客针对不同类别有单独的标题?在本教程中,我们将分享一个简单的代码片段,您可以使用它为每个 WordPress 类别添加自定义页眉、页脚甚至侧边栏。 您是否见过针对不同类别有不同标题的 WordPre

ads via 小工具