Spring Boot2.0之 整合XXL-Job详解编程语言

参考git上面的 springboot demo

 

创建maven工程:

pom:

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
  <modelVersion>4.0.0</modelVersion> 
  <groupId>com.toov5</groupId> 
  <artifactId>springboot-xxl-job</artifactId> 
  <version>0.0.1-SNAPSHOT</version> 
    
  	<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>1.5.10.RELEASE</spring-boot.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>1.9.2-SNAPSHOT</version> 
		</dependency> 
 
	</dependencies> 
 
	<build> 
		<plugins> 
			<!-- spring-boot-maven-plugin (提供了直接运行项目的插件:如果是通过parent方式继承spring-boot-starter-parent则不用此插件) --> 
			<plugin> 
				<groupId>org.springframework.boot</groupId> 
				<artifactId>spring-boot-maven-plugin</artifactId> 
				<version>${spring-boot.version}</version> 
				<executions> 
					<execution> 
						<goals> 
							<goal>repackage</goal> 
						</goals> 
					</execution> 
				</executions> 
			</plugin> 
		</plugins> 
	</build> 
   
   
   
</project> 

   controller

 

 

注:

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

是调度中心的地址

 

 

Spring Boot2.0之 整合XXL-Job详解编程语言

 

 修改job名字:与注解一致

Spring Boot2.0之 整合XXL-Job详解编程语言

 

config  通过config这个类 读取properties中的信息 然后注入到spring boot 容器中

 

项目结构:

Spring Boot2.0之 整合XXL-Job详解编程语言

 

 

Icontroller (做spring boot测试用的)

 

package com.toov5.api.controller; 
 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
 
@RestController 
public class IndexController { 
   @RequestMapping("/index") 
   public String index() { 
       return "ok"; 
   } 
}

config (读取 properties文件 并且注入到spring 容器中的)

package com.toov5.job.executor.core.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; 
 
/** 
 * xxl-job config 
 * 
 * @author xuxueli 2017-04-28 
 */ 
@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 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 XxlJobExecutor xxlJobExecutor() { 
        logger.info(">>>>>>>>>>> xxl-job config init."); 
        XxlJobExecutor xxlJobExecutor = new XxlJobExecutor(); 
        xxlJobExecutor.setAdminAddresses(adminAddresses); 
        xxlJobExecutor.setAppName(appName); 
        xxlJobExecutor.setIp(ip); 
        xxlJobExecutor.setPort(port); 
        xxlJobExecutor.setAccessToken(accessToken); 
        xxlJobExecutor.setLogPath(logPath); 
        xxlJobExecutor.setLogRetentionDays(logRetentionDays); 
 
        return xxlJobExecutor; 
    } 
 
}

 

 Job

package com.toov5.TestJob; 
 
import org.springframework.stereotype.Component; 
 
import com.xxl.job.core.biz.model.ReturnT; 
import com.xxl.job.core.handler.IJobHandler; 
import com.xxl.job.core.handler.annotation.JobHandler; 
 
 
@JobHandler(value="myJob") 
@Component 
public class MyJob extends IJobHandler { 
     @Override 
    public ReturnT<String> execute(String param) throws Exception { 
        System.out.println("XXL-Job传递的参数是:"+param); 
        return SUCCESS; 
    } 
}

 

 logback:

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

  

启动admin的server,然后启动job的spring boot

运行成功:

 Spring Boot2.0之 整合XXL-Job详解编程语言

 

 相关配置 入config 、 logback application.properties 参考github上的demo 修改就可以了

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16133.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论