> 文章列表 > xxl-job定时任务调度中心的配置以及整合到自己的项目中实现远程调用

xxl-job定时任务调度中心的配置以及整合到自己的项目中实现远程调用

xxl-job定时任务调度中心的配置以及整合到自己的项目中实现远程调用

目录

前言:

xxl-job配置与启动:

xxl-job-admin:

 xxl-job-execultor--sample-springboot:

启动任务调度中心:

编辑 

调用定时任务:

​编辑 

自己的项目中配置xxl-job:

项目结构:

​编辑 

AdUpdateTaskConfig:

application.properties:

logback.xml:

pom依赖:

 创建自己的任务(AdUpdateJob):

 配置自己写的定时任务:


前言:

 在分布式项目中,实际开发会采用负载均衡策略,那么一个服务也许会部署多个服务器。如果说不采用任务调度中心而是在服务模块中写定时任务的话,会造成同一个任务多次执行,有可能会造成数据库的多次修改。

xxl-job配置与启动:

xxl-job-admin:

分布式任务调度平台XXL-JOB (xuxueli.com),从该网址clone代码。

 改成自己的数据库,同时还需要创建数据库和执行sql文件

 xxl-job-execultor--sample-springboot:

 上面的注解用来表示该任务的名称。

如果以后想要添加自己的定时任务,只需要在这个模块里面写就行了

启动任务调度中心:

 

启动的url是 localhost:xxl-job-admin的端口号/jobinfo

 

我的是 localhost:8069/jobinfo

调用定时任务:

 

 

虽然我们成功跑起来了,但是大伙还是有很多疑惑,比如怎么配置自己的定时任务,以及如何在自己的项目中使用定时任务,接下来才是重点

在自己的项目中配置xxl-job:

项目结构:

 

AdUpdateTaskConfig:

package com.dmdd.taskservice.config;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/* xxl-job config @author xuxueli 2017-04-28*/
@Slf4j
@Configuration
public class AdUpdateTaskConfig {@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;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {log.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;}
}

 

 

application.properties:

# web port
server.port=6969
# no web
#spring.main.web-environment=false# 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:8069/xxl-job-admin xxl-job, access token
xxl.job.accessToken=default_token xxl-job executor appname
xxl.job.executor.appname=xxl-job-executor-sample
 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 server-info
xxl.job.executor.ip=
xxl.job.executor.port=9999
 xxl-job executor log-path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
 xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30

 

端口记得跟自己的xxl-job-admin服务端口对应 

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/xxl-job-executor-sample-springboot.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>

 

pom依赖:

<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.dmdd</groupId><artifactId>task-service</artifactId><version>0.0.1-SNAPSHOT</version><name>task-service</name><description>task-service</description><properties><java.version>8</java.version></properties><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>2.4.1-SNAPSHOT</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

该依赖中我们引入了

<!-- xxl-job-core -->
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.4.1-SNAPSHOT</version>
</dependency>

我们想要引入该依赖需要如下操作

 导入xxl-job-core依赖到我们的项目中

 

 创建自己的任务(AdUpdateJob):

package com.dmdd.taskservice.config;import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
@Slf4j
@Component
public class AdUpdateJob {private static Logger logger = LoggerFactory.getLogger(AdUpdateJob.class);@XxlJob("test")public void updateAd() {log.info("任务调度成功");}}

该任务的名字叫test。我们想要在自己的项目中调用该服务还是需要启动xxl-job-admin服务 

 配置自己写的定时任务:

点击新增 

 

 cron用来配置任务执行的时间

JobHandler要写任务名

 配置完就可以启动了