SpringBoot部署xxl-job方法详细讲解

SpringBoot部署xxl-job方法详细讲解

1. 简介

xxl-job是一款分布式定时任务调度平台,支持固定间隔、固定时间以及CRON表达式等多种调度方式,同时也支持多线程、任务追踪、报警监控、在线日志等多种实用功能。而SpringBoot作为目前流行的开发框架之一,为xxl-job的部署提供了便利。

本攻略将详细介绍在SpringBoot应用中如何部署xxl-job

2. 步骤

2.1 下载xxl-job-admin和xxl-job-executor

  • xxl-job-admin是任务管理平台,提供了任务维护、调度管理等多种操作;
  • xxl-job-executor是执行器,用于执行任务。

可以在xxl-job官网的下载页面下载到最新的两个版本。

2.2 配置xxl-job-admin

解压下载好的xxl-job-admin压缩包,将其中的application.properties配置文件中的内容改为以下内容:

server.port=8080

# datasource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/xxl-job-admin?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
spring.datasource.username=root
spring.datasource.password=123456

# xxl-job, access token
xxl.job.accessToken=

# xxl-job, mail alarm
xxl.job.alarm.email.host=smtp.qq.com
xxl.job.alarm.email.port=465
xxl.job.alarm.email.ssl=true
xxl.job.alarm.email.username=alarm@qq.com
xxl.job.alarm.email.password=alarm_password
xxl.job.alarm.email.sendNick=XXL-JOB-ALARM

# xxl-job, i18n
xxl.job.i18n=

# xxl-job, executor address
xxl.job.executor.address=http://localhost:8088/xxl-job-executor/

其中,需要根据自身情况修改以下配置项:
* server.portxxl-job-admin服务所监听的端口号;
* spring.datasourcexxl-job-admin使用的MySQL数据库连接信息

2.3 部署xxl-job-admin

xxl-job-admin文件夹下,执行以下命令启动xxl-job-admin服务:

java -jar xxl-job-admin-2.2.0.jar

不出意外的话,xxl-job-admin启动时的命令行输出应该有一个“Started XxlJobAdminApplication in X seconds”的提示。

接着在浏览器中访问http://localhost:8080/xxl-job-admin即可进入xxl-job-admin管理平台。

2.4 配置xxl-job-executor

解压下载好的xxl-job-executor压缩包,将其中的application.properties配置文件中的内容改为以下内容:

# xxl job, registry configuration
xxl.job.executor.registries[0].address=localhost:2181
xxl.job.executor.registries[0].timeout=60000

# xxl job, executor configuration
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.title=xxl-job-executor-sample
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
xxl.job.executor.logretentiondays=30

# xxl job, inner communication
xxl.job.executor.ip=

# xxl job, spring ioc
xxl.job.executor.springfile=/config/xxl-job-executor-sample.xml

# xxl job, alarm email
xxl.job.alarm.email.enable=false
xxl.job.alarm.email.address=

# xxl job, accessToken
xxl.job.accessToken=

# xxl job, 开启自动注册
xxl.job.executor.autoRegistry=true

其中,需要根据自身情况修改以下配置项:
* xxl.job.executor.registriesxxl-job-executor使用的Zookeeper注册中心的地址;
* xxl.job.executor.appnamexxl-job-executor的应用名称;
* xxl.job.executor.logpathxxl-job-executor的日志文件所在路径。

2.5 启动xxl-job-executor

xxl-job-executor文件夹下,执行以下命令启动xxl-job-executor服务:

java -jar xxl-job-executor-2.2.0.jar

这样,xxl-job-adminxxl-job-executor的配置和部署就完成了。

3. 示例

下面是两个示例,演示xxl-job如何在SpringBoot应用中应用。

3.1 固定间隔调度

SpringBoot应用的pom.xml文件中加入以下依赖:

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${latest.version}</version>
</dependency>

定义定时任务类:

@Component
public class DemoJob {

    @XxlJob("demoJob")
    public void demoJob() throws InterruptedException {
        System.out.println(DateUtil.format(new Date(), "HH:mm:ss") + " 开始执行");
        Thread.sleep(5000);
        System.out.println(DateUtil.format(new Date(), "HH:mm:ss") + " 执行结束");
    }
}

这里使用了xxl-job-core提供的@XxlJob注解,标识定时任务的任务名称。

SpringBoot应用的application.yml中添加以下配置:

xxl:
  job:
    admin:
      addresses: http://localhost:8080/xxl-job-admin
    executor:
      appname: demo-job
      ip:
      port: 9999

其中,addresses指定了xxl-job的管理平台地址,appname指定了xxl-job执行器的应用名称,port指定了xxl-job执行器的服务端口。

最后,启动SpringBoot应用和xxl-job-executor服务即可。

3.2 CRON表达式调度

SpringBoot应用的pom.xml文件中加入以下依赖:

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${latest.version}</version>
</dependency>

定义定时任务类:

@Component
public class DemoJob {

    @XxlJob(value = "demoJob", cron = "0 */1 * * * ?")
    public void demoJob() throws InterruptedException {
        System.out.println(DateUtil.format(new Date(), "HH:mm:ss") + " 开始执行");
        Thread.sleep(5000);
        System.out.println(DateUtil.format(new Date(), "HH:mm:ss") + " 执行完成");
    }
}

注意,这里的@XxlJob注解中加入了cron属性,指定了该定时任务的CRON表达式。

SpringBoot应用的application.yml中添加以下配置:

xxl:
  job:
    admin:
      addresses: http://localhost:8080/xxl-job-admin
    executor:
      appname: demo-job
      ip:
      port: 9999

其中,addresses指定了xxl-job的管理平台地址,appname指定了xxl-job执行器的应用名称,port指定了xxl-job执行器的服务端口。

最后,启动SpringBoot应用和xxl-job-executor服务即可。

4. 总结

本攻略主要介绍了在SpringBoot应用中部署xxl-job的方法,包括安装配置xxl-job-adminxxl-job-executor,并提供了两个示例帮助读者快速入手。

除了上述使用方式,xxl-job同时也支持其他多种任务调度方式和应用场景,推荐读者在实际项目中更具自身需求进行使用和定制化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot部署xxl-job方法详细讲解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 值得收藏的SpringBoot 实用的小技巧

    值得收藏的SpringBoot实用的小技巧 在SpringBoot的开发过程中,有一些实用的小技巧可以提高开发效率,降低代码量和阅读难度。下面列举了一些值得收藏的小技巧。 1. 使用lombok简化实体类的编写 在实体类中,我们通常需要定义常量、属性、getter/setter、toString等方法,这些方法都是重复的代码,使用lombok可以自动生成这些…

    Java 2023年5月15日
    00
  • 导入SpringCloud依赖踩的坑及解决

    下面我将详细讲解“导入SpringCloud依赖踩的坑及解决”的完整攻略。 导入SpringCloud依赖踩的坑及解决 1. 问题描述 在开发SpringCloud项目时,我们需要导入一些SpringCloud相关的依赖包,但在引入这些依赖时,可能会遇到一些坑,阻碍我们项目的正常开发。以下是一些可能遇到的问题: 版本依赖冲突问题:SpringCloud的各个…

    Java 2023年5月31日
    00
  • Java SpringMVC异步处理详解

    以下是关于“Java SpringMVC异步处理详解”的完整攻略,其中包含两个示例。 Java SpringMVC异步处理详解 在Java SpringMVC中,异步处理可以提高Web应用程序的性能和吞吐量。异步处理可以将请求处理过程中的等待时间转换为处理其他请求的时间,从而提高系统的并发处理能力。在SpringMVC中,异步处理可以通过以下两种方式实现: …

    Java 2023年5月16日
    00
  • SpringCloud使用Feign实现动态路由操作

    Spring Cloud是一个基于Spring Boot开发的微服务框架,其中Feign作为一个轻量级的HTTP客户端,可以与Eureka、Ribbon等组件实现服务间的通讯,同时,Feign还提供了非常方便的方式进行服务之间的调用。下面,我将详细讲解如何在Spring Cloud中使用Feign进行动态路由操作。 一、添加依赖 在Spring Cloud项…

    Java 2023年5月20日
    00
  • 常见的线程池有哪些?

    让我来为你详细讲解如何回答这个问题。 1. 什么是线程池? 线程池是线程的容器,用于维护和复用线程,从而提高应用程序的性能和资源利用率。线程池通常会维护一组工作线程,每个线程都可以从线程池中获取一个任务并执行。 2. 常见的线程池有哪些? 常见的线程池有以下几种: 2.1. 固定大小线程池 固定大小线程池是指线程池中的线程数是固定的,当线程池中的线程都处于运…

    Java 2023年5月10日
    00
  • 利用Springboot+vue实现图片上传至数据库并显示的全过程

    下面是利用Spring Boot和Vue实现图片上传至数据库并显示的全过程。 前置准备 技术栈 Spring Boot Vue.js axios ElementUI MySQL MyBatis 下载代码 可以从GitHub上下载示例代码:https://github.com/KevinPang2019/springboot-vue-image-upload …

    Java 2023年6月1日
    00
  • Java编程接口详细

    Java编程接口详细攻略 什么是Java编程接口(API) Java编程接口(API)是Java中非常重要的概念。它是一组Java类、接口和方法的集合,使得Java程序员可以轻松地使用某些功能或模块。API文档包含了Java为程序员提供的应用编程接口的详细介绍、类的功能描述和方法使用说明等。 Java API文档 Java API文档通常由类和方法的文档组成…

    Java 2023年5月19日
    00
  • 让chatgpt将html中的图片转为base64方法示例

    要让ChatGPT将HTML中的图片转为Base64,可以使用Python的base64模块来实现。以下是实现该功能的完整攻略: 步骤1:导入所需的模块和库 首先需要导入Python的base64模块和用于读取HTML文件的BeautifulSoup库。 import base64 from bs4 import BeautifulSoup 步骤2:读取HT…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部