SpringBoot集成系列--xxlJob

文章目录

  • 一、搭建调度中心xxl-job-admin
    • 1、下载项目
    • 2、调整项目参数
    • 3、执行初始化数据库SQL
    • 4、启动项目
    • 5、访问
  • 二、集成步骤
    • 1、添加xxl-job的依赖
    • 2、添加xxl-job的依赖
    • 3、配置执行器
    • 4、创建执行器
    • 5、开发任务
      • 1)方式1:BEAN模式(方法形式)
      • 2)方式2:GLUE模式(Java)
    • 6、测试
  • 三、总结

一、搭建调度中心xxl-job-admin

1、下载项目

https://gitee.com/xuxueli0323/xxl-job

2、调整项目参数

端口号冲突,修改端口号,数据库密码不一样,改为你的密码
在这里插入图片描述

3、执行初始化数据库SQL

在这里插入图片描述

4、启动项目

把项目打包成jar包,使用java -jar命令启动

5、访问

访问http://localhost:8087/xxl-job-admin,输入用户名:admin,密码:123456,这个是默认初始化的用户名和密码,登录成功
在这里插入图片描述

二、集成步骤

1、添加xxl-job的依赖

引入依赖到pom.xml

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

2、添加xxl-job的依赖

在application.properties添加xxl-job的配置

### 调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册""任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8087/xxl-job-admin
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=default_token
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-forlan
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册""调度中心请求并触发任务";
xxl.job.executor.ip=
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=D:/data/applogs/xxl-job/jobhandler
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则,-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30

3、配置执行器

初始化并配置xxl-job的执行器,将其集成到Spring Boot应用中。

@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;}
}

4、创建执行器

登录调度中心,选择执行器管理菜单,新增一个执行器
在这里插入图片描述
AppName就是我们之前配置的application.properties中的xxl.job.executor.appname

到这里已经全部配置完毕,接下来开发我们的任务即可

5、开发任务

1)方式1:BEAN模式(方法形式)

需要新增XxlJobHandler类,每个任务需要开发一个方法,并添加"@XxlJob"注解,如下

package cn.forlan.job;import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;@Component
public class MyXxlJobHandler {@XxlJob("myXxlJobHandler")public void execute() throws Exception {// 任务执行逻辑System.out.println("MyXxlJobHandler is running.");XxlJobHelper.log("MyXxlJobHandler is running.");}
}

选择任务管理菜单,新增任务,JobHandler填写上myXxlJobHandler,填完所有信息,保存即可
在这里插入图片描述

2)方式2:GLUE模式(Java)

直接在调度中心,新建调度任务,运行模式选中 “GLUE模式(Java)”
在这里插入图片描述
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面
在这里插入图片描述
编写我们的代码,保存即可
在这里插入图片描述

6、测试

选择执行一次,就可以看到成功执行
在这里插入图片描述
查看日志,就可以看到我们的执行情况
在这里插入图片描述
在这里插入图片描述

三、总结

xxl-job包括调度中心和执行器两个主要部分,调度中心负责管理调度信息,按照调度配置发出调度请求,执行器负责接收调度请求并执行对应的JobHandler中业务逻辑。通过这种方式,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性。

大概原理如下:

  • 任务注册:任务的注册是通过在xxl-job-admin管理平台上配置任务信息,包括任务名称、执行器地址、任务参数等。
  • 任务调度:xxl-job-admin管理平台会根据任务的配置信息,将任务调度信息写入数据库。调度中心会定时扫描数据库,根据任务的调度策略和触发器条件,选择合适的执行器节点进行任务调度。
  • 任务执行:执行器节点会定时向调度中心发送心跳请求,获取待执行的任务。调度中心根据任务的调度策略,将任务分配给执行器节点。执行器节点接收到任务后,根据任务的类型和参数进行任务的执行。
  • 任务监控:xxl-job提供了任务监控功能,可以查看任务的执行情况、日志和统计信息。执行器节点会将任务的执行情况和日志信息上报给调度中心,调度中心将这些信息存储在数据库中,供用户查看。

通过以上功能,xxl-job实现了分布式任务的调度和执行,提供了可靠、高效的任务调度解决方案。

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

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

相关文章

202350读书笔记|《再别康桥:徐志摩诗选》——微风起,清芬酝藉,不减荼

202350读书笔记|《再别康桥&#xff1a;徐志摩诗选》——微风起&#xff0c;清芬酝藉&#xff0c;不减荼 《再别康桥&#xff1a;徐志摩诗选》我觉得有时候诗人是很狂热的&#xff0c;上头的感觉。 有几首很喜欢&#xff0c;节选如下&#xff1a; 偶然 我是天空里的一片云&…

ESP32-Web-Server编程- 在 Web 上开发动态纪念册

ESP32-Web-Server编程- 在 Web 上开发动态纪念册 概述 Web 有很多有趣的玩法&#xff0c;在打开网页的同时送她一个惊喜。 需求及功能解析 本节演示在 ESP32 上部署一个 Web&#xff0c;当打开对应的网页时&#xff0c;将运行动态的网页内容&#xff0c;显示炫酷的纪念贺词…

<蓝桥杯软件赛>零基础备赛20周--第9周--前缀和与差分

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周&#xff08;读者可以按…

用户案例|Milvus 助力 Credal.AI 实现 GenAI 安全与可控

AIGC 时代&#xff0c;企业流程中是否整合人工智能&#xff08;AI&#xff09;对于的企业竞争力至关重要。然而&#xff0c;随着 AI 不断发展演进&#xff0c;企业也在此过程中面临数据安全管理、访问权限、数据隐私等方面的挑战。 为了更好地解决上述问题&#xff0c;Credal.A…

【华为数据之道学习笔记】3-4主数据治理

主数据是参与业务事件的主体或资源&#xff0c;是具有高业务价值的、跨流程和跨系统重复使用的数据。主数据与基础数据有一定的相似性&#xff0c;都是在业务事件发生之前预先定义&#xff1b;但又与基础数据不同&#xff0c;主数据的取值不受限于预先定义的数据范围&#xff0…

Prometheus 发现机制和告警

1.服务发现 Prometheus Server的数据抓取工作于Pull模型&#xff0c;因而&#xff0c;它必需要事先知道各Target的位置&#xff0c;然后才能从相应的Exporter或Instrumentation中抓取数据。在不同的场景下&#xff0c;需要结合不同的机制来实现对应的数据抓取目的。 对于小型的…

画好一张规范的原理图,这些点你可要注意了!

不光是代码有可读性的说法&#xff0c;原理图也有。很多时候原理图不仅仅是给自己看的&#xff0c;也会给其它人看&#xff0c;如果可读性差&#xff0c;会带来一系列沟通问题。所以&#xff0c;要养成良好习惯&#xff0c;做个规范的原理图。此外&#xff0c;一个优秀的原理图…

挑选分支中某一个提交进行合并

复制提交的哈希(sha-1)值 挑选提交 git cherry-pick 复制过来的哈希值 若有冲突&#xff0c;解决冲突&#xff0c;没有冲突&#xff0c;即合并完成

快速认识什么是:Docker

Docker&#xff0c;一种可以将软件打包到容器中并在任何环境中可靠运行的工具。但什么是容器以及为什么需要容器呢&#xff1f;今天就来一起学快速入门一下Docker吧&#xff01;希望本文对您有所帮助。 假设您使用 Cobol 构建了一个在某种奇怪风格的 Linux 上运行的应用程序。…

API接口使用方法(封装好的电商平台)

为了进行此平台API的调用&#xff0c;首先我们需要做下面几件事情。 1、 获取一个KEY。 点击获取 2、 参考API文档里的接入方式和示例。 3、查看测试工具是否有需要的接口&#xff0c;响应实例的返回字段是否符合参数要求。 4、利用平台的文档中心和API测试工具&#xff0c…

【算法集训】基础数据结构:三、链表

链表就是将所有数据都用一个链子串起来&#xff0c;其中链表也有多种形式&#xff0c;包含单向链表、双向链表等&#xff1b; 现在毕竟还是基础阶段&#xff0c;就先学习单链表吧&#xff1b; 链表用头结点head表示一整个链表&#xff0c;每个链表的节点包含当前节点的值val和下…

可以彻底告别手写正则表达式了

大家好&#xff0c;我是风筝&#xff0c;公众号「古时的风筝」 这篇文章的目的是让你能得到完美的正则表达式&#xff0c;而且还不用自己拼。 说到正则表达式&#xff0c;一直是令我头疼的问题&#xff0c;这家伙一般时候用不到&#xff0c;等用到的时候发现它的规则是一点儿…