错误现象:

在本地开发环境中,应用服务启动后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配置的定时任务相关推荐

  1. 在非容器(集群)环境下运行dapr

    作者:李俱顺 原文:https://www.4async.com/2021/03/2021-03-11-running-dapr-without-container/ 前一段时间一直关注的dapr正式 ...

  2. quartz在集群环境下的最终解决方案

    在集群环境下,大家会碰到一直困扰的问题,即多个 APP 下如何用 quartz 协调处理自动化 JOB . 大家想象一下,现在有 A , B , C3 台机器同时作为集群服务器对外统一提供 SERVI ...

  3. 集群环境下定时调度的解决方案之Quartz集群

    集群环境下定时调度的解决方案之Quartz集群 参考文章: (1)集群环境下定时调度的解决方案之Quartz集群 (2)https://www.cnblogs.com/yinfengjiujian/p ...

  4. 分布式集群环境下,如何实现session共享三(环境搭建)

    这是分布式集群环境下,如何实现session共享系列的第三篇.在上一篇:分布式集群环境下,如何实现session共享二(项目开发)中,准备好了一个通过原生态的servlet操作session的案例.本 ...

  5. Java技术分享:集群环境下的定时任务

    定时任务的实现方式有多种,例如JDK自带的Timer+TimerTask方式,Spring 3.0以后的调度任务(Scheduled Task),Quartz框架等. Timer+TimerTask是 ...

  6. 集群环境下,你不得不注意的ASP.NET Core Data Protection 机制

    引言 最近线上环境遇到一个问题,就是ASP.NET Core Web应用在单个容器使用正常,扩展多个容器无法访问的问题.查看容器日志,发现以下异常: System.Security.Cryptogra ...

  7. Hadoop集群环境下网络架构的设计与优化

    2019独角兽企业重金招聘Python工程师标准>>> 大数据时代,研究大数据的IT 厂商把研究重心放在优化大数据系统软件架构.优化业务逻辑.优化数据分析算法.优化节点性能等方向,而 ...

  8. weblogic 12C集群环境下的session复制

    做过weblogic集群环境的人应该都清楚,要想实现session同步,必须满足两个条件:第一,在weblogic.xml里面增加session同步相关的代码:第二,所有放入session的类都要序列 ...

  9. 服务器集群环境下session的共享问题

    一,集群和分布式的区别 在进入今天的正题之前,对服务器集群和分布式服务器这两个概念进行简要说明. 服务器集群:服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器. ...

  10. shell 脚本实现 k8s 集群环境下指定 ns 资源的 yaml 文件备份

    shell 脚本实现 k8s 集群环境下指定 ns 资源的 yaml 文件备份 需求说明 功能实现 shell 脚本实现 shell 使用方式 前置工具环境安装 dump-k8s-yaml.sh 使用 ...

最新文章

  1. kafka实战最佳经验,阿里又现海王!某程序员同时约两个女生十一出游
  2. 怎么传日期参数_时间序列amp;日期学习笔记大全(下)
  3. 【OpenCV3】视频读写——cv::VideoCapture和cv::VideoWriter详解
  4. ubuntu忘记root密码解决
  5. 支付宝又要改版了:首页顶栏新增了这个模块
  6. XML编程总结(七)——使用XPath对象查询xml文档
  7. 使用C语言进行面向对象的开发--GObject入门[7]
  8. 当出现“在当前位置发现已经存在为RESUME.XLW的文件。您希望将该文件替换掉吗?” 解决方案...
  9. 有序表,二叉排序树,二叉平衡树平均查找长度比较例题 二叉平衡树的高度
  10. 探究CSS3中的transition和transform属性方法使用
  11. 如何设置Sketch快捷键,Sketch提升效率的常用技巧
  12. LCD1602开始--麒麟座OK
  13. 用python创建微信机器人_手把手教你用Python创建微信机器人
  14. dout java,java-附加到ObjectOutputStream
  15. 示波器的触发功能使用详解
  16. 计算机行业除了编程还有什么工作可以选,计算机行业除了编程还有什么工作可以选?...
  17. C++描述 645.蛇形矩阵
  18. Android系统的编舞者Choreographer
  19. 日分析破亿!Stratifyd在AI数据分析领域再获佳绩
  20. 小学教师需要学c语言吗,教师心理c证必须要有吗

热门文章

  1. Linux系统多重引导U盘工具
  2. 江南大学计算机应用第三阶段,2019下半年江南大学第三阶段语文英语计算机基..._公共英语考试_帮考网...
  3. 简单算法之丢手绢游戏/c++
  4. 两部委联合叫停“基因测序”体检
  5. 4g物联网卡助力“现代农业”发展壮大
  6. python 构件二维数组_通过这四个构件块来升级您的javascript数组
  7. BUUCTF:[SWPU2019]神奇的二维码
  8. mysql查字段的备注_mysql怎么查看字段的备注
  9. 事件冒泡和事件捕获的区别
  10. web 文字描边动画