当前位置:   article > 正文

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的端口号/xxl-job-admin

我的是 localhost:8069/xxl-job-admin

调用定时任务

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

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

项目结构:

AdUpdateTaskConfig:

  1. package com.dmdd.taskservice.config;
  2. import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. /**
  8. * xxl-job config
  9. *
  10. * @author xuxueli 2017-04-28
  11. */
  12. @Slf4j
  13. @Configuration
  14. public class AdUpdateTaskConfig {
  15. @Value("${xxl.job.admin.addresses}")
  16. private String adminAddresses;
  17. @Value("${xxl.job.accessToken}")
  18. private String accessToken;
  19. @Value("${xxl.job.executor.appname}")
  20. private String appname;
  21. @Value("${xxl.job.executor.address}")
  22. private String address;
  23. @Value("${xxl.job.executor.ip}")
  24. private String ip;
  25. @Value("${xxl.job.executor.port}")
  26. private int port;
  27. @Value("${xxl.job.executor.logpath}")
  28. private String logPath;
  29. @Value("${xxl.job.executor.logretentiondays}")
  30. private int logRetentionDays;
  31. @Bean
  32. public XxlJobSpringExecutor xxlJobExecutor() {
  33. log.info(">>>>>>>>>>> xxl-job config init.");
  34. XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
  35. xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
  36. xxlJobSpringExecutor.setAppname(appname);
  37. xxlJobSpringExecutor.setAddress(address);
  38. xxlJobSpringExecutor.setIp(ip);
  39. xxlJobSpringExecutor.setPort(port);
  40. xxlJobSpringExecutor.setAccessToken(accessToken);
  41. xxlJobSpringExecutor.setLogPath(logPath);
  42. xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
  43. return xxlJobSpringExecutor;
  44. }
  45. }

application.properties:

  1. # web port
  2. server.port=6969
  3. # no web
  4. #spring.main.web-environment=false
  5. # log config
  6. logging.config=classpath:logback.xml
  7. ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
  8. xxl.job.admin.addresses=http://127.0.0.1:8069/xxl-job-admin
  9. ### xxl-job, access token
  10. xxl.job.accessToken=default_token
  11. ### xxl-job executor appname
  12. xxl.job.executor.appname=xxl-job-executor-sample
  13. ### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
  14. xxl.job.executor.address=
  15. ### xxl-job executor server-info
  16. xxl.job.executor.ip=
  17. xxl.job.executor.port=9999
  18. ### xxl-job executor log-path
  19. xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
  20. ### xxl-job executor log-retention-days
  21. xxl.job.executor.logretentiondays=30

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

logback.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration debug="false" scan="true" scanPeriod="1 seconds">
  3. <contextName>logback</contextName>
  4. <property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/>
  5. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  6. <encoder>
  7. <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
  8. </encoder>
  9. </appender>
  10. <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
  11. <file>${log.path}</file>
  12. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  13. <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
  14. </rollingPolicy>
  15. <encoder>
  16. <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
  17. </pattern>
  18. </encoder>
  19. </appender>
  20. <root level="info">
  21. <appender-ref ref="console"/>
  22. <appender-ref ref="file"/>
  23. </root>
  24. </configuration>

pom依赖:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.3.4.RELEASE</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.dmdd</groupId>
  12. <artifactId>task-service</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>task-service</name>
  15. <description>task-service</description>
  16. <properties>
  17. <java.version>8</java.version>
  18. </properties>
  19. <dependencies>
  20. <!-- spring-boot-starter-web (spring-webmvc + tomcat) -->
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-web</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-test</artifactId>
  28. <scope>test</scope>
  29. </dependency>
  30. <!-- xxl-job-core -->
  31. <dependency>
  32. <groupId>com.xuxueli</groupId>
  33. <artifactId>xxl-job-core</artifactId>
  34. <version>2.4.1-SNAPSHOT</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.projectlombok</groupId>
  38. <artifactId>lombok</artifactId>
  39. </dependency>
  40. </dependencies>
  41. <build>
  42. <plugins>
  43. <plugin>
  44. <groupId>org.springframework.boot</groupId>
  45. <artifactId>spring-boot-maven-plugin</artifactId>
  46. </plugin>
  47. </plugins>
  48. </build>
  49. </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):

  1. package com.dmdd.taskservice.config;
  2. import com.xxl.job.core.handler.annotation.XxlJob;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.stereotype.Component;
  7. import java.io.BufferedReader;
  8. import java.io.IOException;
  9. import java.io.InputStreamReader;
  10. import java.net.HttpURLConnection;
  11. import java.net.URL;
  12. @Slf4j
  13. @Component
  14. public class AdUpdateJob {
  15. private static Logger logger = LoggerFactory.getLogger(AdUpdateJob.class);
  16. @XxlJob("test")
  17. public void updateAd() {
  18. log.info("任务调度成功");
  19. }
  20. }

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

 配置自己写的定时任务:

点击新增 

 

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

JobHandler要写任务名

 配置完就可以启动了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/96057
推荐阅读
相关标签
  

闽ICP备14008679号