集群环境下,谁偷走quartz配置的定时任务
错误现象:
在本地开发环境中,应用服务启动后TRIGGER_STATE直接就变为ERROR
前段时间在项目中,使用quartz配置一个定时任务,定时任务都持久化到oracle数据库中,但是应用服务器启动后,数据库qrtz_triggers(trigger信息表)中,对应的任务数据的TRIGGER_STATE字段就直接变为ERROR,导致定时任务不执行。
没有错误log日志,出错原因难定位。
对以下可能出错的原因进行了调查:
1.quartz文件配置错误
① 检查配置文件,调查结果是,配置文件没有发现错误。
② 项目中已经配置有一条定时任务A,但是任务A能正常执行。
③ 将任务A的quartz配置注释,只留下新增配置的定时任务,启动后还是一样报错。
项目中,其他子系统也使用了quartz配置定时任务,可以排除不是quartz配置文件错误。
2.定时任务实现类出错
① 定时任务实现类中,将业务逻辑全部注释,只输出system.out.println,但启动后,也报错。(经过很多次的调试,有时应用服务器启动,也能正常的执行一次新增的定时任务,但后面TRIGGER_STATE就又变为ERROR)
② 将新增的定时任务配置的时间,由2分钟改为10秒后,定时任务能正常运行。
3.发现数据库qrtz_scheduler_state(调度器状态表)中,有很多条数据。表示有很多实例应用都在运行quartz。
经过这些测试和调查,发现是其它机器可能将新增的定时任务取走执行,但是其它机器上又没有配置该新增定时任务,然后再调度该任务的时候就将数据库qrtz_triggers(Trigger信息表)中,对应的任务数据的TRIGGER_STATE字段变为ERROR。
综上所述,本地开发环境下,项目组成员使用同一数据库进行开发时,每位开发人员在quartz中,配置的定时任务数量不一致。当应用服务启动后,quartz任务调度器会根据数据库qrtz_triggers(trigger信息表)中的数据执行Job,数据库中已经存在新增的定时任务,而取走的应用服务quartz配置中并没有配置该新增定时任务,执行时就将TRIGGER_STATE变为ERROR,导致新增Job不能正常执行。
建议:
使用quartz配置定时任务,多台服务器使用同一数据库进行开发时,保证数据库qrtz_scheduler_state(任务调度表)中只有一条数据,这样就能保证定时任务是自己的应用服务取走执行的。
集群环境下,谁偷走quartz配置的定时任务相关推荐
- 在非容器(集群)环境下运行dapr
作者:李俱顺 原文:https://www.4async.com/2021/03/2021-03-11-running-dapr-without-container/ 前一段时间一直关注的dapr正式 ...
- quartz在集群环境下的最终解决方案
在集群环境下,大家会碰到一直困扰的问题,即多个 APP 下如何用 quartz 协调处理自动化 JOB . 大家想象一下,现在有 A , B , C3 台机器同时作为集群服务器对外统一提供 SERVI ...
- 集群环境下定时调度的解决方案之Quartz集群
集群环境下定时调度的解决方案之Quartz集群 参考文章: (1)集群环境下定时调度的解决方案之Quartz集群 (2)https://www.cnblogs.com/yinfengjiujian/p ...
- 分布式集群环境下,如何实现session共享三(环境搭建)
这是分布式集群环境下,如何实现session共享系列的第三篇.在上一篇:分布式集群环境下,如何实现session共享二(项目开发)中,准备好了一个通过原生态的servlet操作session的案例.本 ...
- Java技术分享:集群环境下的定时任务
定时任务的实现方式有多种,例如JDK自带的Timer+TimerTask方式,Spring 3.0以后的调度任务(Scheduled Task),Quartz框架等. Timer+TimerTask是 ...
- 集群环境下,你不得不注意的ASP.NET Core Data Protection 机制
引言 最近线上环境遇到一个问题,就是ASP.NET Core Web应用在单个容器使用正常,扩展多个容器无法访问的问题.查看容器日志,发现以下异常: System.Security.Cryptogra ...
- Hadoop集群环境下网络架构的设计与优化
2019独角兽企业重金招聘Python工程师标准>>> 大数据时代,研究大数据的IT 厂商把研究重心放在优化大数据系统软件架构.优化业务逻辑.优化数据分析算法.优化节点性能等方向,而 ...
- weblogic 12C集群环境下的session复制
做过weblogic集群环境的人应该都清楚,要想实现session同步,必须满足两个条件:第一,在weblogic.xml里面增加session同步相关的代码:第二,所有放入session的类都要序列 ...
- 服务器集群环境下session的共享问题
一,集群和分布式的区别 在进入今天的正题之前,对服务器集群和分布式服务器这两个概念进行简要说明. 服务器集群:服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器. ...
- shell 脚本实现 k8s 集群环境下指定 ns 资源的 yaml 文件备份
shell 脚本实现 k8s 集群环境下指定 ns 资源的 yaml 文件备份 需求说明 功能实现 shell 脚本实现 shell 使用方式 前置工具环境安装 dump-k8s-yaml.sh 使用 ...
最新文章
- kafka实战最佳经验,阿里又现海王!某程序员同时约两个女生十一出游
- 怎么传日期参数_时间序列amp;日期学习笔记大全(下)
- 【OpenCV3】视频读写——cv::VideoCapture和cv::VideoWriter详解
- ubuntu忘记root密码解决
- 支付宝又要改版了:首页顶栏新增了这个模块
- XML编程总结(七)——使用XPath对象查询xml文档
- 使用C语言进行面向对象的开发--GObject入门[7]
- 当出现“在当前位置发现已经存在为RESUME.XLW的文件。您希望将该文件替换掉吗?” 解决方案...
- 有序表,二叉排序树,二叉平衡树平均查找长度比较例题 二叉平衡树的高度
- 探究CSS3中的transition和transform属性方法使用
- 如何设置Sketch快捷键,Sketch提升效率的常用技巧
- LCD1602开始--麒麟座OK
- 用python创建微信机器人_手把手教你用Python创建微信机器人
- dout java,java-附加到ObjectOutputStream
- 示波器的触发功能使用详解
- 计算机行业除了编程还有什么工作可以选,计算机行业除了编程还有什么工作可以选?...
- C++描述 645.蛇形矩阵
- Android系统的编舞者Choreographer
- 日分析破亿!Stratifyd在AI数据分析领域再获佳绩
- 小学教师需要学c语言吗,教师心理c证必须要有吗
热门文章
- Linux系统多重引导U盘工具
- 江南大学计算机应用第三阶段,2019下半年江南大学第三阶段语文英语计算机基..._公共英语考试_帮考网...
- 简单算法之丢手绢游戏/c++
- 两部委联合叫停“基因测序”体检
- 4g物联网卡助力“现代农业”发展壮大
- python 构件二维数组_通过这四个构件块来升级您的javascript数组
- BUUCTF:[SWPU2019]神奇的二维码
- mysql查字段的备注_mysql怎么查看字段的备注
- 事件冒泡和事件捕获的区别
- web 文字描边动画