springboot 集成xxl-job 定时任务管理平台

项目集成xxl-job https://github.com/nlxs0511/springmybatisplus.git

项目集成邮件      https://github.com/nlxs0511/springboot-solr-master.git

实现多服务反向代理:         https://blog.csdn.net/sinat_34338162/article/details/109195242


1、官方文档 
    https://www.xuxueli.com/xxl-job

2、按官方文档启动本地xxl-job服务    

2.1源码仓库地址

源码仓库地址Release Download
https://github.com/xuxueli/xxl-jobDownload
http://gitee.com/xuxueli0323/xxl-jobDownload

2.2解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:

  1. xxl-job-admin:调度中心
  2. xxl-job-core:公共依赖
  3. xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
  4. :xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
  5. :xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用;
  6. :xxl-job-executor-sample-frameless:无框架版本;

2.3导入数据库,修改配置文件如上图2.2

2.4启动项目

11:24:39.364 logback [main] INFO  c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_211 on HLW103339 with PID 23332 (D:\krystal\aaaajiaogou\xxl-job\xxl-job-admin\target\classes started by Administrator in D:\krystal\aaaajiaogou\xxl-job)
11:24:39.370 logback [main] INFO  c.x.job.admin.XxlJobAdminApplication - No active profile set, falling back to default profiles: default
11:24:41.429 logback [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http)
11:24:41.441 logback [main] INFO  o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8080"]
11:24:41.443 logback [main] INFO  o.a.catalina.core.StandardService - Starting service [Tomcat]
11:24:41.443 logback [main] INFO  o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.39]
11:24:41.446 logback [main] INFO  o.a.c.core.AprLifecycleListener - An older version [1.2.14] of the Apache Tomcat Native library is installed, while Tomcat recommends a minimum version of [1.2.23]
11:24:41.446 logback [main] INFO  o.a.c.core.AprLifecycleListener - Loaded Apache Tomcat Native library [1.2.14] using APR version [1.6.2].
11:24:41.446 logback [main] INFO  o.a.c.core.AprLifecycleListener - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
11:24:41.446 logback [main] INFO  o.a.c.core.AprLifecycleListener - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
11:24:42.544 logback [main] INFO  o.a.c.core.AprLifecycleListener - OpenSSL successfully initialized [OpenSSL 1.0.2l  25 May 2017]
11:24:42.674 logback [main] INFO  o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
11:24:42.675 logback [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 2978 ms
11:24:43.594 logback [main] INFO  c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
11:24:43.623 logback [xxl-job, admin JobFailMonitorHelper] INFO  com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
11:24:43.788 logback [main] INFO  o.s.s.c.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
11:24:43.942 logback [main] INFO  o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
11:24:43.965 logback [xxl-job, admin JobFailMonitorHelper] INFO  com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
11:24:44.529 logback [main] INFO  o.s.b.a.e.web.EndpointLinksResolver - Exposing 2 endpoint(s) beneath base path '/actuator'
11:24:44.574 logback [main] INFO  o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8080"]
11:24:44.601 logback [main] INFO  o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
11:24:44.601 logback [main] INFO  o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
11:24:44.602 logback [main] INFO  o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
11:24:44.604 logback [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '/xxl-job-admin'
11:24:44.623 logback [main] INFO  c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 6.262 seconds (JVM running for 8.621)
11:24:48.001 logback [xxl-job, admin JobScheduleHelper#scheduleThread] INFO  c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.

2.5 调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)

默认登录账号 “admin/123456”, 登录后运行界面如下图所示。

 

3、启动springboot client

3.1启动示例中xxl-job-executor-sample-springboot项目

3.2日志如下表示启动成功

logback [main] INFO  c.x.j.e.core.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
11:25:28.427 logback [main] INFO  o.s.s.c.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
11:25:28.696 logback [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:DemoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3234474[class com.xxl.job.executor.mvc.controller.DemoJobHandler#DemoJobHandler]
11:25:28.698 logback [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@2b4b96a4[class com.xxl.job.executor.service.jobhandler.SampleXxlJob#demoJobHandler]
11:25:28.698 logback [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@2dd8ff1d[class com.xxl.job.executor.service.jobhandler.SampleXxlJob#httpJobHandler]
11:25:28.698 logback [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@17e9bc9e[class com.xxl.job.executor.service.jobhandler.SampleXxlJob#demoJobHandler2]
11:25:28.698 logback [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@36b9cb99[class com.xxl.job.executor.service.jobhandler.SampleXxlJob#shardingJobHandler]
11:25:28.698 logback [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4130955c[class com.xxl.job.executor.service.jobhandler.SampleXxlJob#commandJobHandler]
11:25:28.785 logback [main] WARN  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.
11:25:28.800 logback [main] INFO  o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8081"]
11:25:28.843 logback [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8081 (http) with context path ''
11:25:28.861 logback [main] INFO  c.x.j.e.XxlJobExecutorApplication - Started XxlJobExecutorApplication in 4.925 seconds (JVM running for 7.164)
11:25:29.380 logback [Thread-15] INFO  com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9999

3.3 编辑任务


  3.4 执行任务

3.5 调度日志中可见执行日志

 

4、以上操作直接按官方文档来直接就能成功,很简单

 

5、自己新建的springboot集成xxl-job

 

5.1  这边你是要2.2.0版本


        <!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core xxjob任务调度中心-->
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.2.0</version>
        </dependency>

5.2、配置文件

5.3 自动注册执行器

5.4 新建XxlJobConfig文件

package com.test.mybatisplus.xxjob.config;

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
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.Configuration;

/**
 * @Description:
 * @Author: hf
 * @Time: 2020/12/15 10:56
 */
@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    @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() {
        logger.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;
    }

    /**
     * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
     *
     *      1、引入依赖:
     *          <dependency>
     *             <groupId>org.springframework.cloud</groupId>
     *             <artifactId>spring-cloud-commons</artifactId>
     *             <version>${version}</version>
     *         </dependency>
     *
     *      2、配置文件,或者容器启动变量
     *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
     *
     *      3、获取IP
     *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
     */


}

5.5 新建MybatisPlusJobHandler

package com.test.mybatisplus.xxjob;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;



@Component
@Slf4j
public class MybatisPlusJobHandler extends IJobHandler {

    @Override
    @XxlJob("MybatisPlusJobHandler")
    public ReturnT<String> execute(String param) throws Exception {
        XxlJobLogger.log("XXL-JOB, Hello World.");

        for (int i = 0; i < 5; i++) {
            XxlJobLogger.log("beat at:" + i);
            log.info("mybatisplus"+i);
            TimeUnit.SECONDS.sleep(2);
        }
        return ReturnT.SUCCESS;
    }

}

5.6 直接启动项目

5.7在任务管理平台新建任务

5.8 按上3.4执行任务

打印成功

 

6 多台服务器部署,连接相同的数据库,再做个转发(本地使用不同端口模拟多台服务器)

      https://blog.csdn.net/sinat_34338162/article/details/109195242

 

 

 

 

 

在Spring Boot中集成xxl-job非常简单。你可以按照以下步骤进行操作: 1. 首先,将xxl-job的依赖添加到你的项目中。你可以在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.0</version> </dependency> ``` 2. 创建一个任务处理器类,该类需要继承`IJobHandler`。你可以参考以下示例代码创建一个名为`UserJob`的任务处理器类: ```java @Component @JobHandler(value = "userJobHandler") @Slf4j public class UserJob extends IJobHandler { @Override public ReturnT<String> execute(String s) { log.info("统计user开始》》》》》》》》"); XxlJobLogger.log(this.getClass().getSimpleName() + "--start"); return ReturnT.SUCCESS; } } ``` 3. 在该任务处理器类上添加`@Component`和`@JobHandler`注解。`@Component`用于将该类交给Spring容器管理,`@JobHandler`用于标识该类是一个任务处理器,其中的value属性表示任务的名称。 4. 在应用程序的配置文件(如`application.properties`或`application.yml`)中,添加xxl-job的相关配置,例如: ```properties xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin xxl.job.executor.appname=myapp xxl.job.executor.ip= xxl.job.executor.port=9999 xxl.job.accessToken= xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler xxl.job.executor.logretentiondays=-1 ``` 5. 在应用程序的入口类上添加`@EnableXxlJob`注解,该注解用于启用xxl-job的自动配置。 完成以上步骤后,你的Spring Boot应用程序就已经集成xxl-job。你可以通过后台管理端来配置和管理你的定时任务了。希望对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值