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日

相关文章

  • 消息推送平台的实时数仓?!flink消费kafka消息入到hive

    大家好,3y啊。好些天没更新了,并没有偷懒,只不过一直在安装环境,差点都想放弃了。 上一次比较大的更新是做了austin的预览地址,把企业微信的应用和机器人消息各种的消息类型和功能给完善了。上一篇文章也提到了,austin常规的功能已经更新得差不多了,剩下的就是各种细节的完善。 不知道大家还记不记得我当时规划austin时,所画出的架构图: 现在就剩下aus…

    Java 2023年5月11日
    00
  • Java中典型的内存泄露问题和解决方法

    下面是Java中典型的内存泄漏问题和解决方法的完整攻略。 什么是内存泄漏 内存泄漏是指在程序运行过程中,程序动态分配的内存没有被妥善的回收或释放,导致内存的消耗持续增加的一种缺陷。 通常情况下,内存泄漏的问题是比较严重的,它可能导致应用程序的性能下降或者崩溃等问题。 在Java中,当一个不再需要的对象占据了内存却没有被回收时,将会出现内存泄漏的情况。 典型的…

    Java 2023年5月27日
    00
  • 使用Spring Boot实现操作数据库的接口的过程

    使用Spring Boot实现操作数据库的接口的过程大致可以分为以下几个步骤: 准备工作:创建一个Spring Boot项目并添加必要的依赖。 配置数据库连接:在application.properties文件中配置数据库的连接信息,如数据库的URL、用户名、密码等。 定义数据模型:创建一个Java类来表示数据库中的数据表,包括表的字段和相关方法。 定义数据…

    Java 2023年5月20日
    00
  • Springboot – Fat Jar示例详解

    下面我来详细讲解“Springboot – Fat Jar示例详解”的完整攻略。 简介 首先介绍一下什么是Fat Jar。简单来说,它是一个可以包含应用程序所有依赖库的大型JAR文件,因此它也被称为可执行JAR文件。SpringBoot可以使用Maven或Gradle生成Fat Jar,其他构建工具也支持类似的功能。 在使用Fat Jar时,需要做的就是提供…

    Java 2023年5月19日
    00
  • Java编程实现的二维数组转置功能示例

    下面我来详细讲解“Java编程实现的二维数组转置功能示例”的完整攻略。 什么是二维数组转置? 二维数组转置就是将原本按行存储的二维数组,按列存储重新排列的过程。例如,原先的二维数组表示为: 1 2 3 4 5 6 经过转置之后,变成了: 1 4 2 5 3 6 实现二维数组转置的方法 实现二维数组转置的方法有很多种,本篇文章主要介绍两种方式: 方法一:使用一…

    Java 2023年5月26日
    00
  • spring结合hibernate示例详解

    Spring与Hibernate整合示例详解 简介 在实际开发中,使用Spring和Hibernate框架的组合是比较常见的,这样可以提高开发效率,降低代码耦合度,同时也能够保证数据访问效率。 本文将详细讲解Spring和Hibernate框架的整合过程和使用方法,并且提供两个实例来演示该过程,其中一个是基于XML配置方式,另一个是基于注解配置方式。在学习本…

    Java 2023年5月19日
    00
  • SpringMVC深入讲解文件的上传下载实现

    下面是SpringMVC深入讲解文件的上传下载实现的完整攻略。 上传文件 HTML表单设置 在html表单中设置enctype=”multipart/form-data”即可上传文件。注意要将表单method设置为post。 <form method="post" action="/upload" enctype…

    Java 2023年6月15日
    00
  • java.lang.Void 与 void的比较及使用方法介绍

    Java中的Void和void Java中的Void和void是两个容易混淆的概念,但实际上它们是有着明显的区别的。 Void 先来看看Void。Void是Java中的一个类,不同于基本类型(如int和double),它不能进行实例化。Void类只有一个实例,即常量Void.TYPE,表示的是空类型。 我们可以用Void类来定义一个返回值类型为void的方法…

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