Spring Boot 整合 ElasticJob 分布式任务调度教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取
点击前往百度网盘获取
点击前往夸克网盘获取
Spring Boot 整合 ElasticJob 分布式任务调度教程
一、ElasticJob 简介
ElasticJob 是当当网开源的分布式任务调度解决方案,支持:
- 分布式调度:自动分片、负载均衡
- 弹性调度:服务器宕机自动故障转移
- 定时任务:支持Cron表达式
- 任务监控:运维控制台可视化
二、环境准备
- JDK 1.8+
- Maven 3.6+
- Spring Boot 2.7.x
- ElasticJob 3.0.3
- ZooKeeper 3.8.1(用于注册中心)
三、整合步骤
1. 创建Spring Boot项目
通过 start.spring.io 创建基础项目,选择 Web 依赖
2. 添加依赖
<!-- ElasticJob 核心依赖 -->
<dependency><groupId>org.apache.shardingsphere.elasticjob</groupId><artifactId>elasticjob-lite-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency><!-- ZooKeeper 客户端 -->
<dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>5.4.0</version>
</dependency>
3. 配置ElasticJob
application.yml 配置:
elasticjob:reg-center:server-lists: localhost:2181 # ZooKeeper地址namespace: elasticjob-demo # 命名空间
4. 编写定时任务
import org.apache.shardingsphere.elasticjob.api.ShardingContext;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
import org.springframework.stereotype.Component;@Component
public class MyElasticJob implements SimpleJob {@Overridepublic void execute(ShardingContext context) {System.out.println("------ 任务执行开始 ------");System.out.println("分片总数: " + context.getShardingTotalCount());System.out.println("当前分片: " + context.getShardingItem());System.out.println("分片参数: " + context.getShardingParameter());// 添加业务逻辑}
}
5. 任务配置类
import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ElasticJobConfig {@Beanpublic JobConfiguration myJobConfig() {return JobConfiguration.newBuilder("myJob", 3) // 任务名称和分片数.cron("0/5 * * * * ?") // 每5秒执行一次.shardingItemParameters("0=A,1=B,2=C") // 分片参数.overwrite(true) // 本地配置覆盖注册中心.build();}
}
四、ZooKeeper配置
- 下载并启动ZooKeeper:
# 解压后修改配置
cp conf/zoo_sample.cfg conf/zoo.cfg
# 启动服务
bin/zkServer.sh start
五、启动与测试
- 启动Spring Boot应用
- 查看控制台输出:
------ 任务执行开始 ------
分片总数: 3
当前分片: 0
分片参数: A------ 任务执行开始 ------
分片总数: 3
当前分片: 1
分片参数: B------ 任务执行开始 ------
分片总数: 3
当前分片: 2
分片参数: C
六、高级配置
1. 任务事件追踪
elasticjob:tracing:type: RDB # 使用数据库存储日志rdb:url: jdbc:mysql://localhost:3306/ej_logusername: rootpassword: root
2. 任务监听器
public class MyJobListener implements ElasticJobListener {@Overridepublic void beforeJobExecuted(ShardingContext context) {System.out.println("任务开始执行");}@Overridepublic void afterJobExecuted(ShardingContext context) {System.out.println("任务执行结束");}
}// 配置类中添加
@Bean
public ElasticJobListener myJobListener() {return new MyJobListener();
}
七、常见问题
1. ZooKeeper连接失败
- 检查ZooKeeper服务是否启动
- 确认防火墙开放2181端口
2. 分片不生效
- 确保启动多个实例(分布式环境)
- 检查分片参数配置格式
3. 任务重复执行
- 检查namespace配置是否唯一
- 确认注册中心没有残留旧配置
八、总结
通过整合Spring Boot和ElasticJob,我们可以轻松实现:
- 分布式环境下的任务分片
- 高可用故障转移
- 动态扩缩容
- 完善的监控体系
注意事项:
- 生产环境建议使用独立ZooKeeper集群
- 注意ElasticJob版本与Spring Boot的兼容性
- 复杂任务建议使用DataflowJob类型
相关文章:
Spring Boot 整合 ElasticJob 分布式任务调度教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot 整合 ElasticJob 分布式任务调度教程 一、ElasticJob 简介 ElasticJob 是当当网开源的分布式任务调度解决方案,支持: …...
Go 语言规范学习(6)
文章目录 StatementsTerminating statementsEmpty statementsLabeled statementsExpression statementsSend statementsIncDec statementsAssignment statementsIf statementsSwitch statementsExpression switchesType switches For statementsFor statements with single con…...
centos8上实现lvs集群负载均衡nat模式
1.背景: 个人(菜鸟)学习笔记,学点记下来,给未来的自己看。高手看了也请多指点。 按照课程讲,lvs是我国大神开发的负载均衡程序,被收录进内核,只要安装时内核里有它,它就…...
深度学习篇---模型参数调优
文章目录 前言一、Adam学习(lr)1. 默认学习率2. 较小的学习率模型复杂数据集规模小 3. 较大的学习率模型简单训练初期 4. 学习率衰减策略固定步长衰减指数衰减 二、训练轮数(epoch)1. 经验值设定小数据集与简单模型大数据集和复杂…...
影响HTTP网络请求的因素
影响 HTTP 网络请求的因素 1. 带宽 2. 延迟 浏览器阻塞:浏览器会因为一些原因阻塞请求,浏览器对于同一个域名,同时只能有4个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制&…...
Openssl自签证书相关知识
1.前提 检查是否已安装 openssl $ which openssl /usr/bin/openssl 2.建立CA授权中心 2.1.生成ca私钥(ca-prikey.pem) 初始化 OpenSSL 证书颁发机构(CA)的序列号文件 在生成证书时,ca.srl 的初始序列号需正确初始化(如 01),否则可能导致证书冲突 这会将 01 显示在屏幕…...
浅析车规芯片软错误防护加固的重要性
随着汽车电子技术的飞速发展,汽车已经从传统的机械交通工具转变为高度依赖电子系统的智能移动终端。车规芯片作为汽车电子系统的核心部件,其可靠性和安全性直接关系到车辆的正常运行和驾乘人员的安全。然而,车规芯片在复杂的运行环境中面临着…...
(UI自动化测试web端)第二篇:元素定位的方法_css定位之css选择器
看代码里的【find_element_by_css_selector( )】( )里的表达式怎么写? 文章介绍了第三种写法css选择器,你要根据网页中的实际情况来判断自己到底要用哪一种方法来进行元素定位。每种方法都要多练习,全都熟了之后你在工作当中使用起来元素定位…...
QT自运行程序
终局 搞定了兄弟们,啥也别说了。 不要用xcb,用linuxfb。 用systemd服务。 海康威视的豆干型网络摄像头我这边尝试后,发现在multi-user.target运行级别下,摄像头登录成功了也采集不到画面。 具体愿意暂不清楚,所以如果是涉及摄像头的,建议…...
MPU6050模块详解:从原理到STM32驱动指南(上) | 零基础入门STM32第八十九步
主题内容教学目的/扩展视频加速度传感器电路连接。手册分析。驱动程序,读出数据。能读出3轴数据。 师从洋桃电子,杜洋老师 📑文章目录 一、MPU6050模块介绍1.1 核心特性1.2 模块化优势 二、MPU6050模块连接方法2.1 硬件连接2.2 电源注意事项 …...
STM32 MODBUS-RTU主从站库移植
代码地址 STM32MODBUSRTU: stm32上的modbus工程 从站 FreeModbus是一个开源的Modbus通信协议栈实现。它允许开发者在各种平台上轻松地实现Modbus通信功能,包括串口和以太网。FreeMODBUS提供了用于从设备和主站通信的功能,支持Modbus RTU和Modbus TCP协…...
架构师面试(二十二):TCP 协议
问题 今天我们聊一个非常常见的面试题目,不管前端还是后端,也不管做的是上层业务还是底层框架,更不管技术方向是运维还是架构,都可以思考和参与一下哈! TCP协议无处不在,我们知道 TCP 是基于连接的端到端…...
程序自动化填写网页表单数据
1 背景介绍 如何让程序自动化填写网页表单数据,特别是涉及到批量数据情况时,可以减少人力。下面是涉及到的一些场景,都可以通过相关自动化程序实现。 场景1 场景1,领导安排,通过相关省、市、县、乡镇数据࿰…...
Razer macOS v0.4.10快速安装
链接点这里下载最新的 .dmg 文件。将下载的 .dmg 映像文件拖入 应用程序 文件夹中。若首次打开时出现安全警告【什么扔到废纸篓】,这时候点击 Mac 的“系统偏好设置”-> “安全性与隐私”-> “通用”,然后点击底部的 “打开”。【或者仍然打开】 对…...
常用正则表达式-MAC 地址
MAC地址的定义 物理地址(通常称为 MAC地址,Media Access Control Address)是网络设备在数据链路层(如以太网、Wi-Fi)的唯一标识符。它由设备的网络接口卡(NIC)固化在硬件中,用于在局…...
如何自动化同义词并使用我们的 Synonyms API 进行上传
作者:来自 Elastic Andre Luiz 了解如何使用 LLM 来自动识别和生成同义词, 使术语可以通过程序方式加载到 Elasticsearch 同义词 API 中。 提高搜索结果的质量对于提供高效的用户体验至关重要。优化搜索的一种方法是通过同义词自动扩展查询词。这样可以更…...
一. 相机模组摆放原理
1. 背景: 相机开发时经常出现因模组摆放问题,导致相机成像方向异常。轻则修改软件、模组返工, 重则重新修改堆叠,影响相机调试进度。因此,设计一个模型实现模组摆放纠错很有必要。 2. 原理: 2.1 口诀&am…...
【C++游戏引擎开发】《线性代数》(1):环境配置与基础矩阵类设计
一、开发环境配置 1.1 启用C 20 在VS2022中新建项目后右键项目 1.2 启用增强指令集 1.3 安装Google Test vcpkg安装使用指南 vcpkg install gtest:x64-windows# 集成到系统目录,只需要执行一次,后续安装包之后不需要再次执行 vcpkg integrate inst…...
sqli-labs靶场 less 8
文章目录 sqli-labs靶场less 8 布尔盲注 sqli-labs靶场 每道题都从以下模板讲解,并且每个步骤都有图片,清晰明了,便于复盘。 sql注入的基本步骤 注入点注入类型 字符型:判断闭合方式 (‘、"、’、“”…...
基于大模型的知识图谱搜索的五大核心优势
在传统知识图谱与生成式AI融合的浪潮中,基于大模型的知识图谱搜索正成为新一代智能检索的标杆技术,飞速灵燕智能体平台就使用了该技术,其核心优势体现在: 1. 语义穿透力升级 突破关键词匹配局限,通过大模型的深层语义…...
【MySQL】从零开始:掌握MySQL数据库的核心概念(五)
由于我的无知,我对生存方式只有一个非常普通的信条:不许后悔。 前言 这是我自己学习mysql数据库的第五篇博客总结。后期我会继续把mysql数据库学习笔记开源至博客上。 上一期笔记是关于mysql数据库的增删查改,没看的同学可以过去看看…...
人生感悟8
前言 今天,在这里跟各位聊一些看法。为什么现在的歌曲和影视剧越来越没有艺术性和内涵?为什么现在读书的人越来越少? 正文 这里我先声明一点,就像C或者是Java创建variable or constant一样,本文所述内容只限于个人观…...
Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现
此次官方发布的 Spring AI Alibaba OpenManus 实现,包含完整的多智能体任务规划、思考与执行流程,可以让开发者体验 Java 版本的多智能体效果。它能够根据用户的问题进行分析,操作浏览器,执行代码等来完成复杂任务等。 项目源码及…...
鸿蒙UI开发
鸿蒙UI开发 本文旨在分享一些鸿蒙UI布局开发上的一些建议,特别是对屏幕宽高比发生变化时的应对思路和好的实践。 折叠屏适配 一般情况(自适应布局/响应式布局) 1.自适应布局 1.1自适应拉伸 左右组件定宽 TypeScript //左右定宽 Row() { …...
Elasticsearch-实战案例
一、没有使用Elasticsearch的查询速度698ms 1.数据库模糊查询不走索引,在数据量较大的时候,查询性能很差。需要注意的是,数据库模糊查询随着表数据量的增多,查询性能的下降会非常明显,而搜索引擎的性能则不会随着数据增…...
#基于Django实现机器学习医学指标概率预测网站
基于Django实现机器学习医学指标概率预测网站 一、引言 在当今数字化医疗的大背景下,利用机器学习模型结合Web应用进行医学指标的概率预测具有重要的实际意义。本文将详细介绍一个基于Django框架构建的医学指标概率预测系统,通过结合随机森林模型&…...
【bug】OPENCV和FPGA的版本对应关系
如果opencv和FPGA的版本不对应,则会出现如下warning /usr/bin/ld: warning: libavcodec.so.57, needed by /usr/lib/gcc/aarch64-linux-gnu/7/../../../aarch64-linux-gnu/libopencv_videoio.so, may conflict with libavcodec.so.58 /usr/bin/ld: warning: libavformat.so.5…...
IP数据报报文格式
一 概述 IP数据报由两部分组成:首部数据部分。首部的前一部分是固定长度,一共20字节大小,是所有IP数据报文必须具有的;固定部分后面是一些可选字段,其长度是可变的。 二 首部固定部分各字段意义 (1&…...
一键实现:谷歌表单转word(formtoword)
一键将 Google Forms 转换为 Word,最简单的方法 有些繁琐的工作让人倍感挫败,明明 应该 可以自动化。你精心制作了一份 Google Forms,收集了数据,现在需要在 Word 文档中分享其结构或内容。于是,你只能手动复制粘贴问…...
openEuler24.03 LTS下安装Kafka集群
目录 前提条件 Kafka集群规划 下载Kafka 解压 设置环境变量 配置Kafka 分发到其他机器 分发安装文件 分发环境变量 启动Kafka 测试Kafka 关闭Kafka 集群启停脚本 问题及解决 前提条件 安装好ZooKeeper集群,可参考:openEuler24.03 LTS下安…...
