10年 Java程序员,硬核人生!勇往直前,永不退缩!

欢迎围观我的git:https://github.com/R1310328554/spring_security_learn 寻找志同道合的有志于研究技术的朋友,关注本人微信公众号: 觉醒的码农,或Q群 165874185

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

注意事项:

 
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 |

posted on 2021-08-22 14:37  CanntBelieve  阅读(157)  评论(0编辑  收藏  举报