美文网首页
XXL-JOB - 基本使用(springboot)

XXL-JOB - 基本使用(springboot)

作者: cf6bfeab5260 | 来源:发表于2019-04-30 15:25 被阅读0次

    github
    文档
    架构图:

    image.png

    1 准备工作

    • Maven3+
    • Jdk1.7+
    • Mysql5.6+
    • 下载包并解压

    2 快速开始

    2.1 初始化数据库

    • 执行 doc/db/tables_xxl_job.sql 成功以后会生成16张表。

    2.2 根据实际情况修改调度中心配置(xxl-job-admin)

    配置文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties
    说明:

    ### web
    server.port=8080
    server.context-path=/xxl-job-admin
    
    ### resources
    spring.mvc.static-path-pattern=/static/**
    spring.resources.static-locations=classpath:/static/
    
    ### freemarker
    spring.freemarker.templateLoaderPath=classpath:/templates/
    spring.freemarker.suffix=.ftl
    spring.freemarker.charset=UTF-8
    spring.freemarker.request-context-attribute=request
    spring.freemarker.settings.number_format=0.##########
    
    ### mybatis
    mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
    
    ### xxl-job, datasource
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl-job?Unicode=true&characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
    spring.datasource.tomcat.max-wait=10000
    spring.datasource.tomcat.max-active=30
    spring.datasource.tomcat.test-on-borrow=true
    spring.datasource.tomcat.validation-query=SELECT 1
    spring.datasource.tomcat.validation-interval=30000
    
    ### xxl-job email
    spring.mail.host=smtp.qq.com
    spring.mail.port=25
    spring.mail.username=xxx@qq.com
    spring.mail.password=xxx
    spring.mail.properties.mail.smtp.auth=true
    spring.mail.properties.mail.smtp.starttls.enable=true
    spring.mail.properties.mail.smtp.starttls.required=true
    
    
    ### xxl-job login
    xxl.job.login.username=admin
    xxl.job.login.password=123456
    
    ### xxl-job, access token
    xxl.job.accessToken=
    
    ### xxl-job, i18n (default empty as chinese, "en" as English)
    xxl.job.i18n=
    
    

    2.3 启动 调度中心

    • XxlJobAdminApplication为启动累
    • 启动完成可访问http://localhost:8080/xxl-job-admin,登陆账号:admin / 123456
      image.png

    2.4 配置执行器

    执行器是被调度中心调度的代码,xxl-job-excutor-sample下有好几种执行器的demo,我们以springboot为例,它的配置如下:

    # web port
    server.port=8081
    
    # log config
    logging.config=classpath:logback.xml
    
    
    ### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
    xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
    
    ### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
    xxl.job.executor.appname=xxl-job-executor-sample
    #执行器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
    
    

    执行器代码的几个关键点:

    • 引入maven依赖:
    <dependency>
                <groupId>com.xuxueli</groupId>
                <artifactId>xxl-job-core</artifactId>
                <version>${project.parent.version}</version>
            </dependency>
    
    • xxl-job配置类注入spring容器:
    @Configuration
    public class XxlJobConfig {
        private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    
        @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;
        }
    
    }
    
    • 需执行的代码:
    /**
     * 任务Handler示例(Bean模式)
     *
     * 开发步骤:
     * 1、继承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
     * 2、注册到Spring容器:添加“@Component”注解,被Spring容器扫描为Bean实例;
     * 3、注册到执行器工厂:添加“@JobHandler(value="自定义jobhandler名称")”注解,注解value值对应的是调度中心新建任务的JobHandler属性的值。
     * 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
     *
     * @author xuxueli 2015-12-19 19:43:36
     */
    @JobHandler(value="demoJobHandler")
    @Component
    public class DemoJobHandler extends IJobHandler {
    
        @Override
        public ReturnT<String> execute(String param) throws Exception {
            XxlJobLogger.log("XXL-JOB, Hello World.");
    
            for (int i = 0; i < 5; i++) {
                XxlJobLogger.log("beat at:" + i);
                TimeUnit.SECONDS.sleep(2);
            }
            return SUCCESS;
        }
    
    }
    

    2.5 启动xxl-job-excutor-sample-springboot的项目

    2.6 在调度中心配置DemoJobHandler任务

    • 配置执行器:调度中心-执行器管理,这里由于我们已经自动注册上了执行器,所以不用新增了。


    • 配置任务:调度中心-任务管理-新增任务,这里已经有一个任务,我们修改它:1、把Cron 由 0 0 0 * * ? *修改为 0 * * * * ? *,每分钟出发一次。

      image.png
    • 保存任务配置以后,点启动,可以看到状态变成了running。


      image.png
    • 这个时候去 调度中心-调度日志 观察,可以发现,每分钟任务被触发了一次。


      image.png

    相关文章

      网友评论

          本文标题:XXL-JOB - 基本使用(springboot)

          本文链接:https://www.haomeiwen.com/subject/eecvnqtx.html