kettle-scheduler架构解析:Spring+SpringMVC+beetlsql+Quartz如何实现Kettle调度平台 📅 发布时间:2026/8/28 11:27:45 👁 浏览次数: kettle-scheduler架构解析SpringSpringMVCbeetlsqlQuartz如何实现Kettle调度平台【免费下载链接】kettle-scheduler一款简单易用的Kettle调度监控平台专门用来调度和监控由kettle客户端创建的job和transformation。整体的框架是由springsprin gmvc beetlsql整合而成通过调用kettle的API来执行转换和作业并且使用quartz框架完成调度工作。项目地址: https://gitcode.com/gh_mirrors/ke/kettle-schedulerkettle-scheduler 是一款开源的Kettle调度监控平台专门用来定时调度和实时监控由 Kettle 客户端创建的 Job作业和 Transformation转换。它基于Spring SpringMVC beetlsql搭建 Web 骨架通过调用 Kettle 8.0 的 API 执行转换和作业并借助Quartz框架完成 Cron 定时调度让 ETL 工程师彻底告别手工点 Spoon 启动任务的尴尬。为什么需要 Kettle 调度平台Kettle 作为用户规模最大的开源 ETL 工具功能强大但自带的调度能力非常弱——官方都建议用 crontabLinux或 Windows 计划任务来触发任务。于是实践中常见三种土办法用 Spoon 图形界面手动启动 Job写 crontab / 计划任务脚本自己开发 Java 程序调用 Kettle 类库这些方式都缺少统一的任务管理、执行记录和运行监控。kettle-scheduler 正是为此而生一个浏览器里就能操作的任务中心。整体架构四层结构一眼看懂kettle-scheduler 采用经典的 Java Web 分层架构Maven 打包为 WAR部署到 Tomcat核心依赖在 pom.xml 中一目了然层次技术选型职责Web 表现层Spring 4.3 SpringMVC JSP页面路由、登录鉴权、JSON 接口数据访问层beetlsql 2.10 Druid MySQL/Oracle模板化增删改查调度层Quartz 2.2Cron 策略解析与任务触发执行层kettle-core / kettle-engine 8.0.0.0-28加载资源库、执行 Job/Trans、抓取日志入口配置在src/main/webapp/WEB-INF/web.xml通过ContextLoaderListener加载 Spring 主容器DispatcherServlet接管所有*.shtml请求并加载 SpringMVC 配置——这就是整个平台处理请求的第一站。Web 层SpringMVC 如何接管请求统一拦截登录src/main/java/com/zhaxd/core/conf/LoginInterceptor.java实现 Spring 的HandlerInterceptor未登录用户会被拦截保证资源库管理用户管理等敏感页面只对有权限的人开放。REST 风格接口控制器如src/main/java/com/zhaxd/web/controller/TransController.java映射/trans/下的getList.shtml、start.shtml、stop.shtml等统一返回ResultDto或分页对象BootTablePage的 JSON前端用 bootstrap-table 渲染列表。页面视图JSP 视图集中在src/main/webapp/WEB-INF/views/下按trans/、job/、quartz/、monitor/、record/、repository/、user/分目录组织与业务模块一一对应。前端增强src/main/webapp/static/js/中集成 zTree资源库树形目录、cronGenCron 表达式可视化生成器、layer 弹窗和 echarts 图表首页直接展示 7 天内的任务执行趋势。数据层beetlsql 的模板查询思想kettle-scheduler 没有用重量级的 MyBatis而是选择了轻量级的beetlsqlDao 即接口以src/main/java/com/zhaxd/core/mapper/KJobDao.java为例接口继承BaseMapperKJob就免费获得insert、updateById、template条件查询、templateCount等能力个性化 SQL 用SqlStatement注解挂载在接口方法上配合 classpath 下的 SQL 语句文件使用。模型即表src/main/java/com/zhaxd/core/model/下的KJob、KTrans、KQuartz、KRepository、KTransRecord等实体与数据库表字段一一对应插入/更新只需 new 一个对象。多数据源src/main/java/com/zhaxd/web/quartz/model/DBConnectionModel.java描述一套独立的数据库连接beetlsql 的SQLManager按 MySQL/Oracle 方言MySqlStyle/OracleStyle动态构建因此平台同时支持 MySQL 和 Oracle建库脚本分别见kettle-scheduler.sql与kettle-scheduler-oracle.sql。这种接口 注解 模板的组合让增删改查代码量极小非常适合作业量不大的调度类平台。调度层Quartz 如何让 Cron 策略驱动 Kettle 任务这是整个平台最精彩的环节全部位于src/main/java/com/zhaxd/web/quartz/目录策略入库用户在任务管理 – 执行策略里新建 Cron 策略由src/main/java/com/zhaxd/web/service/QuartzService.java写入KQuartz表注册调度QuartzManager.java是调度中枢提供addJobCron 触发、addOnceJob3 秒后一次性执行用于立即启动、modifyJobTime改 Cron、removeJob、getTriggerState查询触发器状态等静态方法。任务命名遵循JOB资源库ID全路径的规范保证唯一且可追溯执行回调到点后 Quartz 回调JobQuartz.java作业或TransQuartz.java转换。两者都实现InterruptableJob用户在页面上点停止时interrupt()方法会调用trans.stopAll()真正中断运行中的任务而不是等它跑完。DisallowConcurrentExecution注解则确保同一任务不会重叠执行——这对 ETL 作业尤其关键避免两个实例同时写同一张表。执行层Kettle API 是这样被调用的Kettle 8.0 引擎被完整内嵌进 WAR 包启动时由src/main/java/com/zhaxd/common/kettle/environment/StartInit.javaSpring 的InitializingBean触发KettleEnvironment.init()完成插件注册、日志体系、JNDI 初始化等环境准备逻辑集中在KettleInit.java中。任务执行的主流程以转换为例见TransQuartz.java取资源库连接src/main/java/com/zhaxd/common/kettle/repository/RepositoryUtil.java维护一个资源库连接缓存同一个数据库资源库只建一次KettleDatabaseRepository加载元数据repository.loadTransformation(name, directory, ...)从 Kettle 数据库资源库读出TransMeta执行并等待trans.execute(null)trans.waitUntilFinished()通过LogLevel控制日志级别结果落盘执行结束后从KettleLogStore日志缓冲提取全文日志按用户/任务/时间戳.txt写入磁盘同时把KTransRecord成功/失败、起止时间、日志路径插入数据库并对KTransMonitor的成功/失败计数 1——首页监控大盘的数据就来自这里。作业JobQuartz.java的流程与之同构loadJob→new Job(repository, jobMeta)→job.run()。由于直接引用 kettle-core/kettle-engine 8.0.0.0-28包括 HBase、Hive、HDFS 在内的大数据组件都能正常运行。部署运行最快上手 kettle-scheduler环境要求JDK 1.8 MySQL或 Oracle Tomcat。git clone https://gitcode.com/gh_mirrors/ke/kettle-scheduler关键步骤详见项目根目录 README.md导入kettle-scheduler.sql建立平台自己的数据库Maven 打包后解压到 Tomcat 的webapps目录配置WEB-INF/classes/resource/db.properties平台数据库连接和kettle.propertiesKettle home、插件目录、日志路径把 Kettle 的simple-jndi、system文件夹拷贝到 Tomcat 的bin目录启动后访问http://localhost:8080/km默认账号 admin / admin。登录后即可进行新增数据库资源库 → 在作业/转换管理中选择资源库里的任务 → 绑定执行策略 → 一键启动首页大盘实时显示监控任务数与 7 天执行趋势。架构亮点小结✅轻量务实Spring 4 beetlsql Quartz 的经典组合没有 SpringBoot 也能清晰易读适合初学者学习传统 Java Web 分层思想✅调度与执行解耦Quartz 只负责什么时候跑JobQuartz/TransQuartz 只负责怎么跑Cron 策略可独立管理复用✅监控闭环执行 → 日志落盘 → 记录入库 → 首页大盘失败一目了然日志还支持下载✅可中断调度InterruptableJob支持运行中终止 Kettle 任务✅双数据库支持MySQL / Oracle 方言切换适配国内老项目的 Oracle 环境。无论是想给存量 Kettle 任务补上定时 监控能力还是想研究如何在 Java 服务中内嵌 Kettle 引擎kettle-scheduler 的源码都值得一读。【免费下载链接】kettle-scheduler一款简单易用的Kettle调度监控平台专门用来调度和监控由kettle客户端创建的job和transformation。整体的框架是由springsprin gmvc beetlsql整合而成通过调用kettle的API来执行转换和作业并且使用quartz框架完成调度工作。项目地址: https://gitcode.com/gh_mirrors/ke/kettle-scheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考