自建XXL-JOB调度平台教程

一、XXL-JOB简介

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。它支持通过Web界面进行管理调度任务,包括任务的增删改查、执行状态监控等。同时,XXL-JOB提供了Java、Spring Boot等多种接入方式,方便开发者在现有项目中集成。

二、环境准备

操作系统:Linux或Windows。
Java环境:Java 8 或更高版本。
Maven:用于构建项目。
数据库:MySQL 5.7+,用于存储调度任务的元数据。

三、步骤详解

3.1 下载与安装

  • 下载源码

  • 构建项目:进入项目根目录,使用Maven构建项目。
   cd xxl-jobmvn clean install -Dmaven.test.skip=true

3.2 配置数据库

  • 导入SQL脚本:在xxl-job/doc/db/目录下找到tables_xxl_job.sql,将其导入到你的MySQL数据库中。

  • 修改配置文件:打开xxl-job-admin/src/main/resources/application.properties,配置数据库连接信息。
   spring.datasource.url=jdbc:mysql://localhost:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=truespring.datasource.username=rootspring.datasource.password=your_password

3.3 启动Admin服务

  • 启动Admin:进入xxl-job-admin模块的target目录,执行jar包。
   cd xxl-job/xxl-job-admin/targetjava -jar xxl-job-admin-2.4.2-SNAPSHOT.jar
  • 访问Admin界面:默认情况下,XXL-JOB Admin的Web界面可以通过http://localhost:8080/xxl-job-admin访问。
  1. 用户名:admin
  2. 密码:123456 

3.4项目中使用xxl-job

  • 在配置文件中添加xxl-job配置 
xxl.job.accessToken=default_token
xxl.job.admin.addresses=http://192.168.140.195:8080/xxl-job-admin
xxl.job.executor.appname=reptile
xxl.job.executor.ip=
xxl.job.executor.address=
xxl.job.executor.port=9999
xxl.job.executor.logPath=/works/serv/reptile/logs/xxl-job
xxl.job.executor.logRetentionDays=30

3.4pom文件引入依赖

        <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.0</version></dependency>

3.5创建配置文件

package com.example.reptile.utils;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;@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;@Beanpublic 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;}
}

3.6编写定时任务

package com.example.reptile.xxlJob;import com.example.reptile.csdn.UrlCrawBokeh;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.io.IOException;
import java.util.Date;@Component
public class xxlJobTest {@AutowiredUrlCrawBokeh urlCrawBokeh;@XxlJob("xxlJobTest")public String xxlJobTest() {System.out.println("xxl-job-------- xxlJobTest定时任务执行成功---------- ");try {urlCrawBokeh.Crawling();} catch (IOException e) {throw new RuntimeException(e);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("定时任务调度完成:"+new Date());return "success";}
}

3.7进入调度中心面板

  • 创建执行器,配置执行器名称

  •  创建定时任务

  • 执行任务

  • 执行结果 

四、总结

通过以上步骤,你可以成功搭建并使用XXL-JOB进行分布式任务调度。XXL-JOB以其灵活的配置、强大的功能和良好的社区支持,成为众多开发者的选择。随着实际应用的深入,不断探索其高级特性和最佳实践,将能更高效地管理复杂的任务调度场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/689863.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2016-2021年全国范围的2.5m分辨率的建筑屋顶数据

一、论文介绍 摘要&#xff1a;大规模且多年的建筑屋顶面积&#xff08;BRA&#xff09;地图对于解决政策决策和可持续发展至关重要。此外&#xff0c;作为人类活动的细粒度指标&#xff0c;BRA可以为城市规划和能源模型提供帮助&#xff0c;为人类福祉带来好处。然而&#xf…

echarts环形图 legend文字过长显示...鼠标移动上展示全称

legend: {type: scroll,orient: vertical,x: left,y: bottom,top: "42%",left: 13%,data: this.dutyNames,textStyle: { color: #fff },triggerEvent: true,tooltip: {show: true,trigger: item,//鼠标移动上去展示全称},formatter: function (params) {var val &qu…

C++11:并发新纪元 —— 深入理解异步编程的力量(1)

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之《C11&#xff1a;并发新纪元 —— 深入理解异步编程的力量》&#xff0c;在这篇文章中&#xff0c;你将会学习到C新特性以及异步编程的好处&#xff0c;以及其如何带来的高性能的魅力&…

最少数量线段覆盖-华为OD

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布一些解题思路&#xff0c;希望大家多指教 一、题目描述 给定坐标轴上的一组线段&#xff0c;线段的起点和终点均为整数…

JavaScript创建日期

创建日期 在JavaScript中创建日期有四种方法 ● 使用new Date() const now new Date(); console.log(now);● 直接输入月、日、年、时间 console.log(new Date(Aug 02 2024 18:05:41));● 也可以输入年月日 console.log(new Date(December 24, 2015));● 直接按照年、月、…

硬盘架构原理及其算法RAID工作原理写惩罚

一、硬盘的架构以及寻址原理 硬盘工作原理&#xff1a; 硬盘寻址原理&#xff1a;逻辑顺序磁道、盘片、扇区&#xff08;顺序CHS&#xff09; 二、机械硬盘算法 读取算法 寻道算法 个人与企业适合的算法和寻道 个人使用的机械硬盘适合的寻道算法和读取算法是&#xff1a…

JDBC调用MogDB存储过程返回ref_cursor的方法和注意事项

MogDB在处理存储过程的时候&#xff0c;有时候需要返回结果集&#xff0c;类型为ref_cursor&#xff0c;但有时候可能会报错。而大部分应用程序都是使用Java JDBC. 根据我们这几年的数据库国产化改造经验&#xff0c;给大家分享一下JDBC调用 MogDB存储过程返回ref_cursor的方法…

KAN网络最全解析——比肩MLP和Transformer?

1 基本思路 1.1 MLP与Spline的优缺点 多层感知器 (MLP)是深度学习的基础理论模块&#xff0c;是目前可用于逼近非线性函数的默认模型&#xff0c;其表征能力已由通用逼近定理证明。但MLP也有明显的缺点&#xff0c;例如在 Transformer中&#xff0c;MLP 的参数量巨大&#xf…

【RAG 博客】RAG 应用中的 Routing

Blog&#xff1a;Routing in RAG-Driven Applications ⭐⭐⭐⭐ 根据用户的查询意图&#xff0c;在 RAG 程序内部使用 “Routing the control flow” 可以帮助我们构建更实用强大的 RAG 程序。路由模块的关键实现就是一个 Router&#xff0c;它根据 user query 的查询意图&…

ppt通过修改幻灯片母版修改页脚

修改幻灯片母版 幻灯片母版就可以了&#xff0c;就可以修改页脚

ROS2 安装与测试

文章目录 ROS2 安装与测试ROS2 安装1. 设置编码2. 添加源3. 安装 ROS24. 设置环境变量 ROS2 示例测试实例一&#xff1a;命令行实例实例二&#xff1a;小海龟仿真实例 参考链接 ROS2 安装与测试 ROS2 安装 基于 Ubuntu 22.04 LTS 操作系统。 1. 设置编码 sudo apt update &…