zoukankan      html  css  js  c++  java
  • quartz 注意事项

    注意事项:

     
    1 scheduler.scheduleJob(jobDetail, trigger); 的时候, jobKey, triggerKey 都不能和数据库中已经存在的 冲突,否则就注册不上!!!。
     
      
    2 scheduler.start(); 之后 , 数据库所有的 触发器 都会被扫描, 然后就工作了。
     
    scheduler.start(); 之后,我们还可以进行注册,或者pause、resume等待,scheduler.start()只是启动了几个后台进程,
     
    3 执行扫描、等任务的时候 ,会先判断是否有 空闲的线程,没有的话, 可能job 就得不得执行,!! 这可能是个大问题, 需要 急早发现, 设置更加到的线程数。
    public int blockForAvailableThreads() { synchronized(nextRunnableLock) { while((availWorkers.size() < 1 || handoffPending) && !isShutdown) { try { nextRunnableLock.wait(500); } catch (InterruptedException ignore) { } } return availWorkers.size(); } }
     
    4 获取锁的时候,会打印对应的线程,
    18:33:05.554 [dufy_test_Worker-3] DEBUG o.q.i.jdbcjobstore.SimpleSemaphore - Lock 'TRIGGER_ACCESS' is desired by: dufy_test_Worker-3
     
     
    5  有时候发现 数据库的几个表的数据, 全没有了! 不是bug!
     
    因为
     
    // 触发器类型
    SimpleScheduleBuilder builder = SimpleScheduleBuilder
    // 设置执行次数
    .repeatSecondlyForTotalCount(50);
     
    所以, 执行完50次之后, 状态变成了 complete, 然后 几个trigger 表,以及 job_detail 表 的对应的job 、trigger 数据都被删除!!
     
    最后 更新qrtz_TRIGGERS 一次时:
    2021-07-25 18:57:52 | Time 0 ms | statement-0 | UPDATE qrtz_TRIGGERS SET JOB_NAME = 'job1_4', JOB_GROUP = 'jGroup1', DESCRIPTION = NULL, NEXT_FIRE_TIME = -1, PREV_FIRE_TIME = 1627210672201, TRIGGER_STATE = 'COMPLETE', TRIGGER_TYPE = 'SIMPLE', START_TIME = 1627210623201, END_TIME = 0, CALENDAR_NAME = NULL, MISFIRE_INSTR = 0, PRIORITY = 5 WHERE SCHED_NAME = 'dufy_test' AND TRIGGER_NAME = 'triggerser1_3' AND TRIGGER_GROUP = 'tGroudsgfsp1'
     
    TRIGGER_STATE = 'COMPLETE' 所以就被删除了!
     
     
    6 job 的blob 是什么?
    是 JobDataMap 的序列化结果, 是job 的参数... 是 java 的ByteArrayOutputStream序列化, 效率可能比较低。。
     
    7 MisfireHandler 大概是每30 s 执行一次...
    18:53:28.196 [QuartzScheduler_dufy_test-NON_CLUSTERED_MisfireHandler] DEBUG o.q.impl.jdbcjobstore.JobStoreTX - Found 0 triggers that missed their scheduled fire-time.
    2021-07-25 18:53:28 | Time 0 ms | commit-0 |
    2021-07-25 18:53:49 | Time 0 ms | statement-0 | SELECT TRIGGER_NAME, TRIGGER_GROUP, NEXT_FIRE_TIME, PRIORITY FROM qrtz_TRIGGERS WHERE SCHED_NAME = 'dufy_test' AND TRIGGER_STATE = 'WAITING' AND NEXT_FIRE_TIME <= 1627210459052 AND (MISFIRE_INSTR = -1 OR (MISFIRE_INSTR != -1 AND NEXT_FIRE_TIME >= 1627210369052)) ORDER BY NEXT_FIRE_TIME ASC, PRIORITY DESC
    2021-07-25 18:53:49 | Time 0 ms | commit-0 |
    18:53:49.055 [dufy_test_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers
    2021-07-25 18:54:13 | Time 0 ms | statement-0 | SELECT TRIGGER_NAME, TRIGGER_GROUP, NEXT_FIRE_TIME, PRIORITY FROM qrtz_TRIGGERS WHERE SCHED_NAME = 'dufy_test' AND TRIGGER_STATE = 'WAITING' AND NEXT_FIRE_TIME <= 1627210483983 AND (MISFIRE_INSTR = -1 OR (MISFIRE_INSTR != -1 AND NEXT_FIRE_TIME >= 1627210393983)) ORDER BY NEXT_FIRE_TIME ASC, PRIORITY DESC
    2021-07-25 18:54:13 | Time 0 ms | commit-0 |
    18:54:13.986 [dufy_test_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers
    18:54:28.195 [QuartzScheduler_dufy_test-NON_CLUSTERED_MisfireHandler] DEBUG o.q.impl.jdbcjobstore.JobStoreTX - MisfireHandler: scanning for misfires...
    2021-07-25 18:54:28 | Time 0 ms | statement-0 | SELECT COUNT(TRIGGER_NAME) FROM qrtz_TRIGGERS WHERE SCHED_NAME = 'dufy_test' AND NOT (MISFIRE_INSTR = -1) AND NEXT_FIRE_TIME < 1627210408195 AND TRIGGER_STATE = 'WAITING'
    18:54:28.197 [QuartzScheduler_dufy_test-NON_CLUSTERED_MisfireHandler] DEBUG o.q.impl.jdbcjobstore.JobStoreTX - Found 0 triggers that missed their scheduled fire-time.
    2021-07-25 18:54:28 | Time 0 ms | commit-0 |
    2021-07-25 18:54:38 | Time 1 ms | statement-0 | SELECT TRIGGER_NAME, TRIGGER_GROUP, NEXT_FIRE_TIME, PRIORITY FROM qrtz_TRIGGERS WHERE SCHED_NAME = 'dufy_test' AND TRIGGER_STATE = 'WAITING' AND NEXT_FIRE_TIME <= 1627210508759 AND (MISFIRE_INSTR = -1 OR (MISFIRE_INSTR != -1 AND NEXT_FIRE_TIME >= 1627210418759)) ORDER BY NEXT_FIRE_TIME ASC, PRIORITY DESC
    2021-07-25 18:54:38 | Time 0 ms | commit-0 |
    18:54:38.762 [dufy_test_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers
    2021-07-25 18:55:05 | Time 0 ms | statement-0 | SELECT TRIGGER_NAME, TRIGGER_GROUP, NEXT_FIRE_TIME, PRIORITY FROM qrtz_TRIGGERS WHERE SCHED_NAME = 'dufy_test' AND TRIGGER_STATE = 'WAITING' AND NEXT_FIRE_TIME <= 1627210535020 AND (MISFIRE_INSTR = -1 OR (MISFIRE_INSTR != -1 AND NEXT_FIRE_TIME >= 1627210445020)) ORDER BY NEXT_FIRE_TIME ASC, PRIORITY DESC
    2021-07-25 18:55:05 | Time 0 ms | commit-0 |


    版权声明
    本文原创发表于 博客园,作者为 阿K .     本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
    欢迎关注本人微信公众号:觉醒的码农,或者扫码进群:

  • 相关阅读:
    第2章 创建基础框架
    目录
    工厂方法模式(Factory Method)
    petshop4.0 详解之七(PetShop表示层设计)
    第1章 启动电子商务网站
    第3章 创建商品目录:第Ⅰ部分
    编写一个JAVA应用程序,用户从键盘只能输入整数,程序输出这些整数的乘积
    书上例题练习第一章
    java与C/C++的区别
    安装JDK遇到的问题
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/15172209.html
Copyright © 2011-2022 走看看