赞
踩
目录
xxl-job-execultor--sample-springboot:
在分布式项目中,实际开发会采用负载均衡策略,那么一个服务也许会部署多个服务器。如果说不采用任务调度中心而是在服务模块中写定时任务的话,会造成同一个任务多次执行,有可能会造成数据库的多次修改。
分布式任务调度平台XXL-JOB (xuxueli.com),从该网址clone代码。
改成自己的数据库,同时还需要创建数据库和执行sql文件
上面的注解用来表示该任务的名称。
如果以后想要添加自己的定时任务,只需要在这个模块里面写就行了
启动的url是 localhost:xxl-job-admin的端口号/xxl-job-admin
我的是 localhost:8069/xxl-job-admin
虽然我们成功跑起来了,但是大伙还是有很多疑惑,比如怎么配置自己的定时任务,以及如何在自己的项目中使用定时任务,接下来才是重点
- 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;
- }
- }
- # 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服务端口对应
- <?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>
- <?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依赖到我们的项目中
- 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要写任务名
配置完就可以启动了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。