xxl-job(三)springboot整合xxl-job

xxl-job(一)入门使用+执行器集群

xxl-job(二)调度中心挂了怎么办 调度中心集群

SpringBoot整合XXLJob

创建项目springboot-xxl-job-test

项目大概是这样子的

Maven依赖信息


 

<?xml version="1.0" encoding="UTF-8"?>

  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

  

    <groupId>com.example</groupId>

    <artifactId>springboot-xxl-job-test</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <name>springboot-xxl-job-test</name>

    <description>Demo project for Spring Boot</description>

    <properties>

        <javax.servlet-api.version>3.0.1</javax.servlet-api.version>

        <jsp-api.version>2.2</jsp-api.version>

        <spring.version>4.3.14.RELEASE</spring.version>

        <jackson.version>2.9.4</jackson.version>

        <aspectjweaver.version>1.8.13</aspectjweaver.version>

        <slf4j-api.version>1.7.25</slf4j-api.version>

        <freemarker.version>2.3.23</freemarker.version>

        <junit.version>4.12</junit.version>

        <jetty-server.version>9.2.24.v20180105</jetty-server.version>

        <hessian.version>4.0.51</hessian.version>

        <httpclient.version>4.5.5</httpclient.version>

        <commons-exec.version>1.3</commons-exec.version>

        <commons-collections4.version>4.1</commons-collections4.version>

        <commons-lang3.version>3.7</commons-lang3.version>

        <commons-email.version>1.5</commons-email.version>

        <c3p0.version>0.9.5.2</c3p0.version>

        <mysql-connector-java.version>5.1.45</mysql-connector-java.version>

        <mybatis-spring.version>1.3.1</mybatis-spring.version>

        <mybatis.version>3.4.5</mybatis.version>

        <groovy-all.version>2.4.13</groovy-all.version>

        <quartz.version>2.3.0</quartz.version>

        <spring-boot.version>2.0.0.RELEASE</spring-boot.version>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <java.version>1.8</java.version>

        <project.parent.version>2.2.0</project.parent.version>

    </properties>

    <dependencyManagement>

        <dependencies>

            <dependency>

                <!-- Import dependency management from Spring Boot (依赖管理:继承一些默认的依赖,工程需要依赖的jar包的管理,申明其他dependency的时候就不需要version) -->

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-parent</artifactId>

                <version>${spring-boot.version}</version>

                <type>pom</type>

                <scope>import</scope>

            </dependency>

  

            <!-- jetty -->

            <dependency>

                <groupId>org.eclipse.jetty</groupId>

                <artifactId>jetty-server</artifactId>

                <version>${jetty-server.version}</version>

            </dependency>

            <dependency>

                <groupId>org.eclipse.jetty</groupId>

                <artifactId>jetty-util</artifactId>

                <version>${jetty-server.version}</version>

            </dependency>

            <dependency>

                <groupId>org.eclipse.jetty</groupId>

                <artifactId>jetty-http</artifactId>

                <version>${jetty-server.version}</version>

            </dependency>

            <dependency>

                <groupId>org.eclipse.jetty</groupId>

                <artifactId>jetty-io</artifactId>

                <version>${jetty-server.version}</version>

            </dependency>

  

        </dependencies>

    </dependencyManagement>

    <dependencies>

        <!-- 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>${project.parent.version}</version>

        </dependency>

    </dependencies>

  

  

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins>

    </build>

  

  </project>

application.properties配置文件信息

 

# web port

  server.port=8081

  

  # log config

  logging.config=classpath:logback.xml

  

  

  ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"

  xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

  

  ### xxl-job executor address

  xxl.job.executor.appname=app-test

  ### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null

  xxl.job.executor.address=

  xxl.job.executor.ip=127.0.0.1

  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

Logback.xml配置文件信息

<?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/test.log"/>

  

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">

        <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>

  

  </configuration>


配置XxlJobConfig

com.example.springbootxxljobtest.config

 

package com.example.springbootxxljobtest.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;

  


  @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();

     */

  

  

  }


 

 

创建handler接口

 

com.example.springbootxxljobtest.jobHandler

package com.example.springbootxxljobtest.jobHandler;

  

  import com.xxl.job.core.biz.model.ReturnT;

  

  import com.xxl.job.core.handler.annotation.XxlJob;

  import org.springframework.beans.factory.annotation.Value;

  import org.springframework.stereotype.Component;

  

  import static com.xxl.job.core.biz.model.ReturnT.SUCCESS;

  

  

  @Component

  public class jobHandler {


        @Value("${server.port}")

        private String serverPort;

  


    @XxlJob("demoJobHandler")

    public ReturnT<String> execute(String param) throws Exception {

        System.out.println("######端口号:serverPort" + serverPort + "###定时Job开始执行啦!!!!######");

        return SUCCESS;

    }

}

启动项目

xxl-job平台添加执行器

平台添加任务

我设置的一秒执行一次

启动任务效果

猜你喜欢

转载自blog.csdn.net/wota5037/article/details/111373015