zoukankan      html  css  js  c++  java
  • 集成xxl-job分布式任务调度平台

    首先声明,本篇博文基于springboot,基于spring的请自行研究。

    (一)启动控制平台

    首先将xxl-job-master.zip下载下来,然后在mysql数据库创建xxl-job数据库。

    执行数据库:

    用tomcat启动xxl-job-admin以后,打开页面:http://localhost:8081/xxl-job-admin/(用户名:admin 密码:123456)

    然后在页面上创建执行器和任务。

    (二)创建执行器 

    第一步:创建maven项目

    第二步:修改pom.xml文件,加入如下:

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.6.RELEASE</version>
        </parent>
        <dependencies>
            <!-- jetty -->
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-util</artifactId>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-http</artifactId>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-io</artifactId>
            </dependency>
            <!-- spring-boot-starter-web (spring-webmvc + tomcat) -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- xxl-job-core -->
            <dependency>
                <groupId>com.xuxueli</groupId>
                <artifactId>xxl-job-core</artifactId>
                <version>1.9.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin </artifactId>
                </plugin>
            </plugins>
        </build>

    第三步:在resources目录下添加application.properties和logback.xml

    # web port
    server.port=8084
    
    # log config
    logging.config=classpath:logback.xml
    
    # xxl-job
    ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
    xxl.job.admin.addresses=http://127.0.0.1:8081/xxl-job-admin
    
    ### xxl-job executor address
    xxl.job.executor.appname=ececutor01
    xxl.job.executor.ip=10.1.1.23
    xxl.job.executor.port=9999
    
    ### xxl-job log path
    xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/
    
    ### xxl-job, access token
    xxl.job.accessToken=
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false" scan="true" scanPeriod="1 seconds">
    
        <contextName>logback</contextName>
        <property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/>
    
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
           <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter" >
                <level>WARN</level>
            </filter>-->
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.path}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
            </rollingPolicy>
            <encoder>
                <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
                </pattern>
            </encoder>
        </appender>
    
        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        </root>
    
        <!--<logger name="com.xxl.job.executor.service.info" level="WARN" additivity="false">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        </logger>-->
    
    </configuration>

    接着,按照如下创建包和类:

    XxlJobConfig:

    package com.jump.config;
    
    import com.xxl.job.core.executor.XxlJobExecutor;
    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 = "com.xxl.job.executor.service.jobhandler")
    public class XxlJobConfig {
        private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    
    
        @Value("${xxl.job.admin.addresses}")
        private String addresses;
    
        @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.executor.logpath}")
        private String logpath;
    
        @Value("${xxl.job.accessToken}")
        private String accessToken;
    
        @Bean(initMethod = "start", destroyMethod = "destroy")
        public XxlJobExecutor xxlJobExecutor() {
            logger.info(">>>>>>>>>>> xxl-job config init.");
            XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
            xxlJobExecutor.setIp(ip);
            xxlJobExecutor.setPort(port);
            xxlJobExecutor.setAppName(appname);
            xxlJobExecutor.setAdminAddresses(addresses);
            xxlJobExecutor.setLogPath(logpath);
            xxlJobExecutor.setAccessToken(accessToken);
            return xxlJobExecutor;
        }
    
    }

    MyJobHandler:

    package com.jump.handler;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Service;
    
    import com.xxl.job.core.biz.model.ReturnT;
    import com.xxl.job.core.handler.IJobHandler;
    import com.xxl.job.core.handler.annotation.JobHander;
    import com.xxl.job.core.log.XxlJobLogger;
    
    /**
     * @author Jump
     * @version 创建时间:2019年1月22日 下午1:25:13 类说明
     */
    @JobHander(value = "myJobHandler")
    @Service
    public class MyJobHandler extends IJobHandler {
        @Value("${xxl.job.executor.port}")
        private String port;
    
        @Override
        public ReturnT<String> execute(String... params) throws Exception {
            XxlJobLogger.log("XXL-JOB, Hello World." + port);
            System.out.println("XXL-JOB, Hello World." + port);
            for (int i = 0; i < 5; i++) {
                XxlJobLogger.log("beat at:" + i);
                // TimeUnit.SECONDS.sleep(2);
            }
            return ReturnT.SUCCESS;
        }
    
    }

    App:

    package com.jump;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * @author Jump
     * @version 创建时间:2019年1月22日 下午1:27:28 类说明
     */
    @SpringBootApplication
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }

    然后右键run,就能开启任务执行器。

  • 相关阅读:
    [iOS]delegate和protocol
    Objective-c中@interface、@implementation、@protocal
    iOS应用的真机调试
    2016最新Java笔试题集锦
    Java面试题相关内容
    JSP面试题及答案
    JAVA面试题相关基础知识
    mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI
    Java中equals和==的区别
    java的Arrays类的应用
  • 原文地址:https://www.cnblogs.com/XJJD/p/10303416.html
Copyright © 2011-2022 走看看