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

目录

前言:

xxl-job配置与启动:

xxl-job-admin:

 xxl-job-execultor--sample-springboot:

启动任务调度中心:

​编辑 

调用定时任务:

​编辑 

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

项目结构:

​编辑 

AdUpdateTaskConfig:

application.properties:

logback.xml:

pom依赖:

 创建自己的任务(AdUpdateJob):

 配置自己写的定时任务:


前言:

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

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

xxl-job配置与启动:

xxl-job-admin:

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

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

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

 xxl-job-execultor--sample-springboot:

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

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

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

启动任务调度中心:

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

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

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

 

我的是 localhost:8069/jobinfo

调用定时任务:

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

 

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

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

项目结构:

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

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;


    @Bean
    public 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:




    logback
    

    
        
            %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
        
    

    
        ${log.path}
        
            ${log.path}.%d{yyyy-MM-dd}.zip
        
        
            %date %level [%thread] %logger{36} [%file : %line] %msg%n
            
        
    

    
        
        
    

 

pom依赖:



	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		2.3.4.RELEASE
		 
	
	com.dmdd
	task-service
	0.0.1-SNAPSHOT
	task-service
	task-service
	
		8
	
	

		
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		

		
		
			com.xuxueli
			xxl-job-core
			2.4.1-SNAPSHOT
		
		
			org.projectlombok
			lombok
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


该依赖中我们引入了



   com.xuxueli
   xxl-job-core
   2.4.1-SNAPSHOT

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

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

xxl-job定时任务调度中心的配置以及整合到自己的项目中实现远程调用_第9张图片 导入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服务 

 配置自己写的定时任务:

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

点击新增 

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

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

JobHandler要写任务名

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

 配置完就可以启动了

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

 

你可能感兴趣的:(数据库)