ruoyi quartz和xxl-job介绍
最近在做一个基于ruoyi框架的项目的IOT项目,本文将xxl-job与ruoyi自带的quartz进行比较。
·
前言
最近在做一个基于ruoyi框架的项目的IOT项目,本文将xxl-job与ruoyi自带的quartz进行比较。
xxl-job与quartz的异同
这一部分主要是将quartz和xxl-job做一个比较,quartz是一款开源的使用非常广泛的定时任务框架。其可以说是定时任务的鼻祖,很多理念都与xxl-job类似。
整体来说,xxl-job就是quartz的一个增强版,其弥补了quartz不支持并行调度,不支持失败处理策略和动态分片的策略等诸多不足,同时其有管理界面,上手比较容易,支持分布式,适用于分布式场景下的使用。两者相同的是都是通过数据库锁来控制任务不能重复执行。
xxl-job官方文档:分布式任务调度平台XXL-JOB
quartz用户文档:
xxl-job与ruoyi自带的quartz的优劣
ruoyi | xxl-job | |
管理界面 | 自带管理界面,无需额外工作 | 有UI管理界面,需要整合到项目里面去 |
分布式 | 使用quartz+Feign+nacos方式实现,由于Feign的特性,调度中心和执行器之间没有完全解耦,需要申明FeignClient. | 调度中心和执行器完解耦,通过DB方式进行任务注册发现。 其中BEAN模式可以很方便的整合ruoyi微服务和xxl-job框架,只需要修改相关配置 |
执行任务的唯一性 | 数据库锁 | 在xxl-job中实现分布式锁用的数据库的分布式锁,其中一个表只存储表的名称,通过 for update 来查询锁。 1):conn.setAutoCommit(false); 关闭隐式提交。 2):select * from xxl_job_lock where lock preparedStatement.execute(); 获得显示排他锁,然后开启事务。 3):conn.commit(); 事务完毕后,提交。 4):preparedStatement.close(); 释放悲观锁开启下一次轮回。 |
更多推荐
已为社区贡献1条内容
所有评论(0)