Quartz Scheduler를 사용하여 작업을 예약하는 응용 프로그램이 있습니다. 응용 프로그램은 현재 Quartz 버전 1.6.2를 실행 중입니다. 내 JobStore는 오라클 데이터베이스가 백업 한 org.quartz.impl.jdbcjobstore.JobStoreTX입니다. 클러스터링은 켜져 있지만 데이터베이스를 사용하는 스케줄러는 하나뿐입니다.Quartz Job이 트리거 된 순서대로 대기하도록 만들 수 있습니까?
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
내 작업은 장기 실행, 그래서 그것은 트리거가 새로운 일자리를 해고 할 때 실행 5 일 (내 THEAD 풀에서 허용되는 최대)를 가지고 매우 흔한 일 다음과 같이 내 석영 스레드가 구성됩니다. 새로 트리거 작업은 불발 나는 다음과 같이 로그 메시지를 참조하십시오 실행중인 작업이 완료
2011-05-20 04:09:30,097 INFO [QuartzScheduler_scheduler-servername-111305822374881_MisfireHandler] o.q.p.h.LoggingTriggerHistoryPlugin - Trigger DEFAULT.JobName1 misfired job DEFAULT.DEFAULT at: 04:09:30 05/20/2011. Should have fired at: 04:08:29 05/20/2011
2011-05-20 04:09:30,120 INFO [QuartzScheduler_scheduler-servername-111305822374881_MisfireHandler] o.q.p.h.LoggingTriggerHistoryPlugin - Trigger DEFAULT.JobName1 misfired job DEFAULT.DEFAULT at: 04:09:30 05/20/2011. Should have fired at: 04:09:30 05/20/2011
2011-05-20 04:09:30,125 INFO [QuartzScheduler_scheduler-servername-111305822374881_MisfireHandler] o.q.p.h.LoggingTriggerHistoryPlugin - Trigger DEFAULT.JobName2 misfired job DEFAULT.DEFAULT at: 04:09:30 05/20/2011. Should have fired at: 04:08:30 05/20/2011
2011-05-20 04:09:30,138 INFO [QuartzScheduler_scheduler-servername-111305822374881_MisfireHandler] o.q.p.h.LoggingTriggerHistoryPlugin - Trigger DEFAULT.JobName2 misfired job DEFAULT.DEFAULT at: 04:09:30 05/20/2011. Should have fired at: 04:09:30 05/20/2011
2011-05-20 04:11:29,998 INFO [QuartzScheduler_scheduler-servername-111305822376676_MisfireHandler] o.q.impl.jdbcjobstore.JobStoreTX - Handling 2 trigger(s) that missed their scheduled fire-time.
되면, 불발 작업 중 하나를 집어 정상적으로 실행 얻을 것이다. 그러나 Quartz는 작업이 원래 실행될 예정이었던 순서에 관계없이 임의로 실화 된 작업을 선택하는 것으로 보입니다. 이상적으로 말하자면, 나는 원래 화재 시간을 기준으로 그들이 달렸다고 가정 된 순서대로 데리러오고 싶습니다.
Quartz ThreadPool의 공간을 사용할 수있게되면 대기중인 (실화되지 않은) 작업이 트리거 된 순서대로 실행되도록 할 수 있습니까?
저는 새로운 일자리를 얻었고 수년 동안 석영을 사용하지 않았기 때문에 이것을 테스트 할 수 없었습니다. 그리고 이것이 작동하는지 테스트 프로젝트를 설정하는 데 귀찮은 일이 아니 었습니다. 그러나 나는 5 년 된 질문에 답하기 위해 귀찮게 노력 했으므로 대답이 도움이 될 것 같아 인상적이다. :) –
비슷한 문제가있어서 검색 중이 었습니다. 스택 오버플로. 결국 나는 코드를 파헤 치고 나 자신을 알아 냈다. 그러나 누군가 다른 사람이 미래에 답을 찾고있는 경우에 대비하여 여기를 남겨 둘 것이라고 생각했다. – samblake
@JonQuarfoth 결국 당신을 위해 무엇이 효과가 있었습니까? 나는 수천 개의 일자리를 계획하고 있는데, 내가 원하는 위치에서 다른 위치로 옮겨야 할 때 그 일은 오래 갈 것입니다. 그 모양은 100GB 정도 될 수 있습니다. Quartz 클러스터링을 사용하여 마스터 스케줄이 작업을 수행 할 때 슬레이브가 해당 작업을 계속 수행 할 것이고 결국에는 슬레이브 중 하나가 선택한 작업에 관심이 있기 때문에 불을 놓치지 않을 것입니다. . 어쩌면 엄청나게 큰 실화 문턱 값을 설정할 수 있습니다. 네가 그것에 대해 어떻게 생각하는지 알려줘. 감사. – Coder