精华内容
下载资源
问答
  • 全新版XXL-JOB分布式定时框架SrpingBoot-XXL-JOB

    万次阅读 多人点赞 2020-06-28 22:43:56
    官方文档https://www.xuxueli.com/xxl-job/ 还是在自己看比较好,我要是写简介和使用也是从上面复制下来的 首先是git官网下载源码: ...首先看xxl-job-admin这个项目从配置文件看起 首先这个需要数据库的支持 Mysql 所

    官方文档https://www.xuxueli.com/xxl-job/
    还是在自己看比较好,我要是写简介和使用也是从上面复制下来的
    在这里插入图片描述
    首先是git官网下载源码:
    源码仓库地址 Release Download

    https://github.com/xuxueli/xxl-job	Download
    http://gitee.com/xuxueli0323/xxl-job	Download
    

    在这里插入图片描述
    代码下载好的目录
    在这里插入图片描述
    首先看xxl-job-admin这个项目从配置文件看起
    首先这个需要数据库的支持 Mysql 所以这个改成自己本地或者服务器的路径 账号 密码
    在这里插入图片描述
    需要的表结构实际已经提供给好了在doc文件下把此文件夹下文件 复制出来运行一下就可以
    在这里插入图片描述
    运行之后是8张表包括用户表
    在这里插入图片描述
    这些配置完成 启动admin项目
    在这里插入图片描述
    启动之后访问

    http://127.0.0.1:8080/xxl-job-admin
    

    弹出登入界面 默认账号:admin 密码:123456
    在这里插入图片描述
    登入后页面
    在这里插入图片描述
    这样第一步就算完成了
    他首先是个分布式框框架 admin这个就算个服务中心 那看一下 消费者怎么做
    官方已经给案例了;
    我这主要用boot项目所以就看boot这个案例了
    在这里插入图片描述
    点开这个项目看到他的 结构
    在这里插入图片描述
    所以比这葫芦画瓢就可以,官方文档说一分钟上手

    搭建一个项目(SpringBoot)
    在这里插入图片描述
    搭建好了首先看一下依赖
    在这里插入图片描述
    2.20版本
    首先这个版本和以前是不一样的
    ”@XxlJob”注解即可
    而以前需要这个注解进行操作

    @JobHandler(value = "demoJobHandler")’
    

    maven依赖

    <!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core -->
    <dependency>
        <groupId>com.xuxueli</groupId>
        <artifactId>xxl-job-core</artifactId>
        <version>2.2.0</version>
    </dependency>
    
    

    首先要把 config的配置那拿过来

    在这里插入图片描述

    package com.xxl.job.executor.core.config;
    
    import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
    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;
    
    /**
     * xxl-job config
     *
     * @author xuxueli 2017-04-28
     */
    @Configuration
    public class XxlJobConfig {
        private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    
        @Value("${xxl.job.admin.addresses}")
        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(ip);
            xxlJobSpringExecutor.setPort(port);
            xxlJobSpringExecutor.setAccessToken(accessToken);
            xxlJobSpringExecutor.setLogPath(logPath);
            xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
    
            return xxlJobSpringExecutor;
        }
    
        /**
         * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
         *
         *      1、引入依赖:
         *          <dependency>
         *             <groupId>org.springframework.cloud</groupId>
         *             <artifactId>spring-cloud-commons</artifactId>
         *             <version>${version}</version>
         *         </dependency>
         *
         *      2、配置文件,或者容器启动变量
         *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
         *
         *      3、获取IP
         *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
         */
    
    
    }
    

    然后就是配置文件了
    在这里插入图片描述
    配置文件

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

    其实把源码的匹配文件拿来就可以使用
    端口设置好就可以使用了
    在这里插入图片描述
    首先手写一个测试类 测试一下

    package com.tangsir.tangxxljob.testJob;
    
    import com.xxl.job.core.biz.model.ReturnT;
    import com.xxl.job.core.handler.annotation.XxlJob;
    import com.xxl.job.core.log.XxlJobLogger;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    import java.util.concurrent.TimeUnit;
    
    @Component
    public class testjob {
    
    
        @XxlJob("test")
        public ReturnT<String> demoJobHandler(String param) throws Exception {
            System.out.println("我是调用成功执行的"+new Date());
            return ReturnT.SUCCESS;
        }
    }
    
    

    写好启动项目:
    在这里插入图片描述
    启动成功看具体的配置:
    打开admin的的控制页面
    首先看到这个执行任务管理器:
    在这里插入图片描述
    在这里插入图片描述
    配置之后看一下执行任务我们需要把刚才写的测试类配置进去才可以执行
    在这里插入图片描述
    配置好保存
    在这里插入图片描述
    开始执行任务
    在这里插入图片描述
    查K你项目已经成功调用了 日志打印出来了一秒一执行一次
    在这里插入图片描述
    admin还有日志功能
    在这里插入图片描述
    在这里插入图片描述
    用户管理可以分发权限执行任务
    在这里插入图片描述
    到此 一个简单教程结束 ,如有不足请赐教!

    展开全文
  • xxl-job安装 拉取镜像 docker pull xuxueli/xxl-job-admin:2.2.0 启动命令 docker run -d --name xxl-job-admin2.2.0-v D:\WorkData\Docker\Xxl-job\applogs:/data/applogs -e PARAMS="--spring.datasource.url=...

    xxl-job安装

    拉取镜像

    docker pull xuxueli/xxl-job-admin:2.2.0

    启动命令

    docker run -d --name xxl-job-admin2.2.0 -v D:\WorkData\Docker\Xxl-job\applogs:/data/applogs -e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.2.101:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root" -p 8882:8080 xuxueli/xxl-job-admin:2.2.0

    查看日志

    docker ps //获取CONTAINER ID

    docker logs -t -f --tail 200f <CONTAINER ID>

    sql脚本

    /*
     Navicat Premium Data Transfer
    
     Source Server         : localhost
     Source Server Type    : MySQL
     Source Server Version : 80023
     Source Host           : localhost:3306
     Source Schema         : xxl_job
    
     Target Server Type    : MySQL
     Target Server Version : 80023
     File Encoding         : 65001
    
     Date: 16/04/2021 13:42:00
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for xxl_job_group
    -- ----------------------------
    DROP TABLE IF EXISTS `xxl_job_group`;
    CREATE TABLE `xxl_job_group`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `app_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '执行器AppName',
      `title` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '执行器名称',
      `order` int(0) NOT NULL DEFAULT 0 COMMENT '排序',
      `address_type` tinyint(0) NOT NULL DEFAULT 0 COMMENT '执行器地址类型:0=自动注册、1=手动录入',
      `address_list` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '执行器地址列表,多地址逗号分隔',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of xxl_job_group
    -- ----------------------------
    INSERT INTO `xxl_job_group` VALUES (1, 'xxl-job-executor-sample', '示例执行器', 1, 0, 'http://10.60.1.240:9999/');
    
    -- ----------------------------
    -- Table structure for xxl_job_info
    -- ----------------------------
    DROP TABLE IF EXISTS `xxl_job_info`;
    CREATE TABLE `xxl_job_info`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `job_group` int(0) NOT NULL COMMENT '执行器主键ID',
      `job_cron` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务执行CRON',
      `job_desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
      `add_time` datetime(0) NULL DEFAULT NULL,
      `update_time` datetime(0) NULL DEFAULT NULL,
      `author` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '作者',
      `alarm_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '报警邮件',
      `executor_route_strategy` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '执行器路由策略',
      `executor_handler` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '执行器任务handler',
      `executor_param` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '执行器任务参数',
      `executor_block_strategy` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '阻塞处理策略',
      `executor_timeout` int(0) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒',
      `executor_fail_retry_count` int(0) NOT NULL DEFAULT 0 COMMENT '失败重试次数',
      `glue_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'GLUE类型',
      `glue_source` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT 'GLUE源代码',
      `glue_remark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'GLUE备注',
      `glue_updatetime` datetime(0) NULL DEFAULT NULL COMMENT 'GLUE更新时间',
      `child_jobid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '子任务ID,多个逗号分隔',
      `trigger_status` tinyint(0) NOT NULL DEFAULT 0 COMMENT '调度状态:0-停止,1-运行',
      `trigger_last_time` bigint(0) NOT NULL DEFAULT 0 COMMENT '上次调度时间',
      `trigger_next_time` bigint(0) NOT NULL DEFAULT 0 COMMENT '下次调度时间',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of xxl_job_info
    -- ----------------------------
    INSERT INTO `xxl_job_info` VALUES (1, 1, '0 0 0 * * ? *', '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '', 0, 0, 0);
    
    -- ----------------------------
    -- Table structure for xxl_job_lock
    -- ----------------------------
    DROP TABLE IF EXISTS `xxl_job_lock`;
    CREATE TABLE `xxl_job_lock`  (
      `lock_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '锁名称',
      PRIMARY KEY (`lock_name`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of xxl_job_lock
    -- ----------------------------
    INSERT INTO `xxl_job_lock` VALUES ('schedule_lock');
    
    -- ----------------------------
    -- Table structure for xxl_job_log
    -- ----------------------------
    DROP TABLE IF EXISTS `xxl_job_log`;
    CREATE TABLE `xxl_job_log`  (
      `id` bigint(0) NOT NULL AUTO_INCREMENT,
      `job_group` int(0) NOT NULL COMMENT '执行器主键ID',
      `job_id` int(0) NOT NULL COMMENT '任务,主键ID',
      `executor_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
      `executor_handler` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '执行器任务handler',
      `executor_param` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '执行器任务参数',
      `executor_sharding_param` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
      `executor_fail_retry_count` int(0) NOT NULL DEFAULT 0 COMMENT '失败重试次数',
      `trigger_time` datetime(0) NULL DEFAULT NULL COMMENT '调度-时间',
      `trigger_code` int(0) NOT NULL COMMENT '调度-结果',
      `trigger_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '调度-日志',
      `handle_time` datetime(0) NULL DEFAULT NULL COMMENT '执行-时间',
      `handle_code` int(0) NOT NULL COMMENT '执行-状态',
      `handle_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '执行-日志',
      `alarm_status` tinyint(0) NOT NULL DEFAULT 0 COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `I_trigger_time`(`trigger_time`) USING BTREE,
      INDEX `I_handle_code`(`handle_code`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Table structure for xxl_job_log_report
    -- ----------------------------
    DROP TABLE IF EXISTS `xxl_job_log_report`;
    CREATE TABLE `xxl_job_log_report`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `trigger_day` datetime(0) NULL DEFAULT NULL COMMENT '调度-时间',
      `running_count` int(0) NOT NULL DEFAULT 0 COMMENT '运行中-日志数量',
      `suc_count` int(0) NOT NULL DEFAULT 0 COMMENT '执行成功-日志数量',
      `fail_count` int(0) NOT NULL DEFAULT 0 COMMENT '执行失败-日志数量',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `i_trigger_day`(`trigger_day`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Table structure for xxl_job_logglue
    -- ----------------------------
    DROP TABLE IF EXISTS `xxl_job_logglue`;
    CREATE TABLE `xxl_job_logglue`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `job_id` int(0) NOT NULL COMMENT '任务,主键ID',
      `glue_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'GLUE类型',
      `glue_source` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT 'GLUE源代码',
      `glue_remark` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'GLUE备注',
      `add_time` datetime(0) NULL DEFAULT NULL,
      `update_time` datetime(0) NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of xxl_job_logglue
    -- ----------------------------
    
    -- ----------------------------
    -- Table structure for xxl_job_registry
    -- ----------------------------
    DROP TABLE IF EXISTS `xxl_job_registry`;
    CREATE TABLE `xxl_job_registry`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `registry_group` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
      `registry_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
      `registry_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
      `update_time` datetime(0) NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `i_g_k_v`(`registry_group`, `registry_key`, `registry_value`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of xxl_job_registry
    -- ----------------------------
    INSERT INTO `xxl_job_registry` VALUES (5, 'EXECUTOR', 'xxl-job-executor-sample', 'http://192.168.2.101:9999/', '2021-04-16 13:41:50');
    
    -- ----------------------------
    -- Table structure for xxl_job_user
    -- ----------------------------
    DROP TABLE IF EXISTS `xxl_job_user`;
    CREATE TABLE `xxl_job_user`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '账号',
      `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码',
      `role` tinyint(0) NOT NULL COMMENT '角色:0-普通用户、1-管理员',
      `permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE INDEX `i_username`(`username`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of xxl_job_user
    -- ----------------------------
    INSERT INTO `xxl_job_user` VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
    
    SET FOREIGN_KEY_CHECKS = 1;
    

    访问

    http://192.168.2.101:8882/xxl-job-admin/toLogin

    密码账号

    admin/123456

    创建任务

    默认执行器

    创建执行器(非必要,可使用默认执行器) 

    自动注册:不需要配置机器地址,项目连接到xxl-job-admin会自动注册。我这里选择的是自动注册。

    手动录入:将机器地址手动录入。 

    项目集成

    注意:xxl-job-admin服务版本与项目maven集成使用的xxl-job-core版本保持一致。我xxl-job-core使用的2.2.0,xxl-job-admin使用的2.1.2报了rpc异常:hessianprotocolexception: no classes defined at reference '64'。

    maven依赖

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

     配置文件

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

    xxl-job配置类 

    import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
    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;
    
    /**
     * xxl-job config
     *
     * @author xuxueli 2017-04-28
     */
    @Configuration
    public class XxlJobConfig {
        private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    
        @Value("${xxl.job.admin.addresses}")
        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);
            logger.info("adminAddresses:{}",adminAddresses);
            xxlJobSpringExecutor.setAppname(appname);
            xxlJobSpringExecutor.setAddress(address);
            xxlJobSpringExecutor.setIp(ip);
            xxlJobSpringExecutor.setPort(port);
            xxlJobSpringExecutor.setAccessToken(accessToken);
            xxlJobSpringExecutor.setLogPath(logPath);
            xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
            return xxlJobSpringExecutor;
        }
    }

    定时调度

    import com.xxl.job.core.biz.model.ReturnT;
    import com.xxl.job.core.handler.annotation.XxlJob;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Component;
    
    @Component
    @Slf4j
    public class TestTask {
    
        @XxlJob("testTask1")
        public ReturnT<String> testTask1(String param) throws Exception {
            log.info("我们不能失去信仰1");
            return ReturnT.SUCCESS;
        }
    
        @XxlJob("testTask2")
        public ReturnT<String> testTask2(String param) throws Exception {
            log.info("我们不能失去信仰2");
            return ReturnT.SUCCESS;
        }
    }

    效果展示

    展开全文
  • XXL-JOB原理--定时任务框架简介(一)

    万次阅读 多人点赞 2018-09-10 21:14:01
    之前在工作中有接触许雪里大神开源的分布式任务调度平台XXL-JOB,最近经过一段时间的源码系统学习,今天简单写一篇博客介绍一下。 相关博客: XXL-JOB原理--执行器注册(二) XXL-JOB原理--任务调度中心执行器...

    之前在工作中有接触许雪里大神开源的分布式任务调度平台XXL-JOB,最近经过一段时间的源码系统学习,今天简单写一篇博客介绍一下。

    相关博客:

    XXL-JOB原理--执行器注册(二)

    XXL-JOB原理--任务调度中心执行器注册(三)

    XXL-JOB原理--任务调度中心任务管理(四)

    XXL-JOB原理--任务执行(五)

    一、完整介绍地址:官方介绍

    二、最新版本架构图:

    三、介绍

    目前我们在项目中可能接触到定时任务框架quartz,应用也是比较广泛的,其也是支持分布式任务调度的,通过数据库竞争锁来实现,当然会有很多的局限性(可能这也是xxl-job出现的原因),quartz支持多种数据库(https://github.com/quartz-scheduler/quartz/tree/master/quartz-core/src/main/resources/org/quartz/impl/jdbcjobstore),xxl-job其实也是在quartz的基础上实现的,但是修改了任务调度的模式,并且任务调度采用注册和RPC调用方式来实现。

    管理后台:

    四、技术栈

    mysql、SSM,内置jetty作为RPC服务调用、quartz

    五、xxl-job支持Postgresql数据库

    目前由于xxl-job只支持mysql数据库,目前在github上拉了一个分支支持Postgresql 地址GitHub地址

     

    六、 xxl-job 底层依赖 quartz 实现,架构如下

     

    展开全文
  • xxl-job-oracle xxl-job for oracle
  • Mac整合XXL-JOB报错 ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file] - Failed to create parent directories for [/data/applogs/xxl-job/xxl-job-admin.log] 解决方案: 在你电脑上的父路径,...

    Mac整合XXL-JOB报错

    ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file] - Failed to create 
    parent directories for [/data/applogs/xxl-job/xxl-job-admin.log]

    解决方案:
    在你电脑上的父路径,也就是最顶层

    cd /


    在这个目录下创建目录 这里要使用sudo 

    sudo mkdir data
    cd data
    sudo mkdir applogs 
    cd applogs
    sudo mkdir xxl-job 

     

    创建完成后在xxl-job目录下创建log文件

    sudo touch xxl-job-admin.log

    将文件权限修改

    sudo chmod 777 xxl-job-admin.log

     

    展开全文
  • Mac整合XXL-JOB报错 ERROR in ch.qos.logback.core.rolling.RollingFileAppender[file] - Failed to create parent directories for [/data/applogs/xxl-job/xxl-job-admin.log] 解决方案: 在你电脑上的父路径,也...
  • XXL-JOB XXL-JOB, a distributed task scheduling framework. -- Home Page -- Introduction XXL-JOB is a distributed task scheduling framework. It's ...
  • XXL-JOB XXL-JOB, a distributed task scheduling framework. -- Home Page -- Introduction XXL-JOB is a lightweight distributed task scheduling ...
  • XXL-JOB

    2021-03-14 19:33:15
    分布式任务调度平台XXL-JOB 初始化数据库 执行官方提供的SQL即可 /xxl-job/doc/db/tables_xxl_job.sql 源码编译 xuxueli/xxl-job 下载好源码后,需要对部分配置进行修改 xxl-job-admin:调度中心 xxl-job-core:...
  • xxl-job分布式定时任务nacos升级设计文档设计思想​ xxl-job分布式定时任务nacos升级改造目前是基于xxl-job v2.2.0版本进行改造,xxl-job主体设计思想是将调度行为抽象形成"调度中心"公共平台,而平台本身并不承担...
  • xxl-job

    2021-04-09 14:59:09
    xxl-job(2.2.0版本) 经验分享:xxl-job的2.0版本和1.0版本差距较大,容易采坑(因为我刚开始就踩了很多坑)。所以,要使用xxl-job的朋友们,推荐从2.2.0开始,下面我将简单介绍一下它。 xxl-job的简介 xxl-Job是一...
  • 一、搭建xxl-job 1、下载xxl-job代码  码云地址:https://gitee.com/xuxueli0323/xxl-job  gitHub地址:https://github.com/xuxueli/xxl-job 2、执行SQL  在数据库执行 \xxl-job\doc\db\tables_xxl_job.sql ...
  • 一、搭建xxl-job1、下载xxl-job代码2、执行SQL在数据库执行 \xxl-job\doc\db\tables_xxl_job.sql3、导入idea导入已存在的模块:File--New--Module from Existing Sources...选择pom文件,直接导入4、修改配置文件...
  • XXL-JOB,一个分布式任务调度框架。 介绍 XXL-JOB是一个分布式任务调度框架。 它的核心设计目标是快速发展,学习简单,轻巧且易于扩展的内容。 现在,它已经是开源的,许多公司在生产环境中使用它,真正的“开箱即...
  • XXL-job

    2021-02-26 17:48:02
    浏览对比知名组件,xxl-job口碑好评如潮,所以记录下学习xxl-job的过程。 (ps:尊重原创,附上xxl地址:https://www.xuxueli.com/xxl-job/) 一、工作机制 xxl-job类似于微服务的注册中心。它提供两个角色:...
  • xxl-job(一)入门使用+执行器集群 xxl-job(二)调度中心挂了怎么办 调度中心集群 SpringBoot整合XXLJob 创建项目springboot-xxl-job-test 项目大概是这样子的 Maven依赖信息 <?xml version="1.0...
  • XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 选型 框架对比(前人总结) feature quartz elastic-job-...
  • 转载:Springboot 项目整合集成 xxl-job ,xxl-job在Springboot 项目上的使用         XXL-JOB 是一个开...
  • 简述本文简单描述如何使用xxl-job-spring-boot-starter开发xxl-job的执行器服务。开发步骤添加依赖创建一个Spring Boot项目添加仓库配置centychen-private-repohttps://gitee.com/centy/maven/raw/master添加依赖包...
  • 分布式定时任务—xxl-job学习(三):源码分析——调度中心(xxl-job-admin)的启动和调用过程前言一、调度中心的启动1.1 分析XxlJobAdminConfig类1.2 分析XxlJobScheduler.init()1.2.1 initI18n()1.2.2 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,213
精华内容 1,285
关键字:

xxl-job