首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Quartz动态设置并发数量
📅 2026/10/21 2:47:45
✍️ 爱科研究院
👁 阅读 3,247
源码仓库Gitee·GitHubquartz存在一个问题当正在进行的任务已经达到了设置的个数后续触发的任务没有线程可用会导致系统宕机Quartz通过StdSchedulerFactory工厂创建调度器initialize方法通过解析quartz.properties配置信息进行加载默认线程个数为10可以通过覆盖信息定义线程个数通过Apollo信息进行线程个数配置Scheduler scheduler (new StdSchedulerFactory()).getScheduler(); //获取Apollo配置信息 Config config ConfigService.getConfig(application); String threadCount config.getProperty(org.quartz.threadPool.threadCount, ); //对quartz.properties配置信息进行覆盖 Properties props new Properties(); InputStream in TaskScheduleServiceImpl.class.getClassLoader().getResourceAsStream(quartz.properties); props.load(in); String threadCountProperties props.get(org.quartz.threadPool.threadCount).toString(); if (.equals(threadCount)) { if (!threadCount.equals(threadCountProperties)) { props.setProperty(org.quartz.threadPool.threadCount, threadCount); //重新创建调度器 StdSchedulerFactory stdSchedulerFactory new StdSchedulerFactory(); stdSchedulerFactory.initialize(props); //关闭原先调度器 scheduler.shutdown(); scheduler stdSchedulerFactory.getScheduler(); in.close(); } }上面代码是在系统初始化中执行的若想实现系统运行中进行动态扩容/缩容调度器线程池大小可以加一个flag标志进行判断通过获取当前系统正在执行的任务个数和系统定义的总数进行对比当达到一定个数或一定比例时再次调用上面代码进行动态扩容/缩容。上面代码存在的问题是当关闭调度器时会杀死原先存在正在进行的任务这是不友好的操作可以添加一个中间件(Redis)将每次触发执行的任务加入Redis中执行完从Redis删除所以每次系统重启都从Redis读取数据对任务重新执行执行完再将其从Redis删除同时为了保证任务的唯一性(集群环境下不管是定时还是立即执行)需要对任务进行加锁操作由于只需要保证同一时刻只能有一个任务在运行保证高可用而不追求强一致性所以选择的是Redis分布式锁Redisson根据先到先得策略使用了Redisson的公平锁。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/21 2:42:44
教培机构如何用GEO+RAG优化截获AI搜索流量
2026/10/21 2:42:44
SpringBoot自动配置源码探究
2026/10/21 2:42:44
读取多波段的tif(利用GDAL)
2026/10/21 3:47:52
WPF+EmguCV实战:实现ROI绘制、掩膜提取与图像分析工具
2026/10/21 3:47:52
REA实战:基于MCP协议打通AI Agent与二进制逆向分析工具链
2026/10/21 3:47:52
农产品溯源系统实战:Flink+Fabric+Vue3全栈落地
2026/10/21 3:47:52
上海家具板材甲醛检测技术指南:三类对象对比表与标准核验SOP
2026/10/21 3:47:52
飞书+OpenClaw+Ollama 私有AI机器人搭建实战:内网群助手从零跑通
2026/10/21 3:42:52
KEGG Network Viewer:轻量级离线通路图交互可视化工具
2026/10/21 0:01:44
ClickHouse实战:从列式存储到亿级数据秒级查询
2026/10/21 0:01:44
高效筛选arXiv机器学习论文:四步法实战指南
2026/10/21 0:01:44
Python爬取百度迁徙数据:接口签名、反爬与SQLite存储实战
2026/10/20 16:07:12
OpenResearch实战:Claude Code、Codex、OpenCode、Cursor 工作流搭建与故障排查
2026/10/20 7:57:25
知识管理核弹:用Obsidian构建第二大脑的工程化方案(TaoToken 统一 Key 接入版)
2026/10/20 16:49:38
金融AI落地指南:从调研报告到技术选型与工程实践
2026/10/20 2:24:03
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/20 2:23:57
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/20 2:23:53
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)