XXL-JOB分布式定时任务框架的使用

  1. 从xxl-job官网(https://github.com/xuxueli/xxl-jobhttps://gitee.com/xuxueli0323/xxl-job)下载源文件。
  2. 解压后文件夹/doc/db/tables_xxl_job.sql,在数据库中创建数据库运行该sql文件,会创建16张表。
  3. idea打开该项目,主要使用xxl-job-admin子项目,该子项目为任务管理平台,类似于注册中心,其他子项目可忽略。
  4. 修改xxl-job-admin/resources/application.properties中的数据源,该数据源必须与上面运行sql文件的数据源地址相同,修改email与login配置。
  5. 启动xxl-job-admin,网址打开ip:port/xxl-job-admin/可查看启动状态。
  6. 新建SpringBoot项目,在xxl-job中是一个执行器。导入依赖
    <dependency>
        <groupId>com.xuxueli</groupId>
        <artifactId>xxl-job-core</artifactId>
        <version>2.0.1</version>
    </dependency>
    
  7. /resources/application.properties中
    # 项目端口
    server.port=8091
    
    # 日志配置
    logging.config=classpath:logback.xml
    
    
    ### xxl-job-admin的地址,步骤5中启动的地址
    xxl.job.admin.addresses=http://ip:port/xxl-job-admin
    
    ### 项目(执行器)的名称
    xxl.job.executor.appname=name
    ### ip不写自动获取
    xxl.job.executor.ip=
    xxl.job.executor.port=9999
    
    ### xxl-job, access token
    xxl.job.accessToken=
    
    ### xxl-job log path
    xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
    ### xxl-job log retention days
    xxl.job.executor.logretentiondays=-1
    
  8. 添加logback.xml日志(可选)
  9. 编写配置类
    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.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ComponentScan(basePackages = "任务所在的package")
    public class XxlJobConfig {
        private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    
        //以下@Value注解的都是配置文件中配置的内容
        @Value("${xxl.job.admin.addresses}")
        private String adminAddresses;
    
        @Value("${xxl.job.executor.appname}")
        private String appName;
    
        @Value("${xxl.job.executor.ip}")
        private String ip;
    
        @Value("${xxl.job.executor.port}")
        private int port;
    
        @Value("${xxl.job.accessToken}")
        private String accessToken;
    
        @Value("${xxl.job.executor.logpath}")
        private String logPath;
    
        @Value("${xxl.job.executor.logretentiondays}")
        private int logRetentionDays;
    
    
        @Bean(initMethod = "start", destroyMethod = "destroy")
        public XxlJobSpringExecutor xxlJobExecutor() {
            logger.info(">>>>>>>>>>> xxl-job config init.");
            XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
            xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
            xxlJobSpringExecutor.setAppName(appName);
            xxlJobSpringExecutor.setIp(ip);
            xxlJobSpringExecutor.setPort(port);
            xxlJobSpringExecutor.setAccessToken(accessToken);
            xxlJobSpringExecutor.setLogPath(logPath);
            xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
            return xxlJobSpringExecutor;
        }
    }
    
  10. 在配置类中配置的任务所在的package下创建任务类,使用@JobHandler(value="任务名")注解以及@Component注解使该类被Spring发现,继承IJobHandler类,重写execute()方法。
    import com.xxl.job.core.biz.model.ReturnT;
    import com.xxl.job.core.handler.IJobHandler;
    import com.xxl.job.core.handler.annotation.JobHandler;
    import com.xxl.job.core.log.XxlJobLogger;
    import org.springframework.stereotype.Component;
    
    @JobHandler(value = "任务名")
    @Component
    public class MyFirstJobHandler extends IJobHandler {
        @Override
        public ReturnT<String> execute(String s) throws Exception {
            XxlJobLogger.log("日志记录内容");
            return SUCCESS;
        }
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值