应该是每晚1点才执行,但中午11点到5点这段时间居然运行了16次,数据库表里面该job下次执行是2014-08-14 01:00:00,这个没错,但为什么会出现没到规定时间就运行的情况? 昨天也出现了,提前执行了7次。
execute方法:使用kettle先抽取数据 -> 处理,应该不关kettle的原因吧?
配置文件:
org.quartz.scheduler.instanceName: FpzwcxScheduler
org.quartz.scheduler.instanceId: AUTO
org.quartz.scheduler.skipUpdateCheck: true
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 50
org.quartz.threadPool.threadPriority: 5
org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties: true
org.quartz.jobStore.dataSource: myDS
org.quartz.jobStore.tablePrefix: QRTZ_
org.quartz.dataSource.myDS.driver: com.sybase.jdbc4.jdbc.SybDriver
org.quartz.dataSource.myDS.URL: jdbc:sybase:Tds:192.168.1.113:5000/fpzwcx?language=us_english
org.quartz.dataSource.myDS.user: sa
org.quartz.dataSource.myDS.password: sybase
org.quartz.dataSource.myDS.maxConnections: 10
没多少分了,抱歉。
6 个解决方案
#1
我也正在看Quartz,但不是很懂,有个问题求教一下,0 0 1 2-31 * ? 是不是表示每个月的2号到31号的凌晨1点执行?如果这个月没有31号,是怎么执行的?对CronTrigger的表达式还不是很懂,求教
#2
简单的测试过,比如2月28号,时间规则 0/5 * * 2-31 * ?,把系统时间设置成23:59:00,当时间到3月1号 00:00:00,job就不执行了,再把时间调到2号,又开始执行。 按时间规则里面L代表最后,但试过 0 0 1 2-L * ? ,报格式错误。
具体这种配置是否完全满足定时任务需求、没有BUG,我也不是100%的保证,如果你测试出什么BUG,欢迎一起交流学习。
#3
表达式没问题,看看哪个地方是不是提前调用了
#4
其他地方没有调用到
#5
顶起
#6
每晚1点执行,为什么不用:0 0 1 * * ?
执行多次,会不会其它地方有额外的配置,或者其它程序在这段时间有调用?
执行多次,会不会其它地方有额外的配置,或者其它程序在这段时间有调用?
#1
我也正在看Quartz,但不是很懂,有个问题求教一下,0 0 1 2-31 * ? 是不是表示每个月的2号到31号的凌晨1点执行?如果这个月没有31号,是怎么执行的?对CronTrigger的表达式还不是很懂,求教
#2
简单的测试过,比如2月28号,时间规则 0/5 * * 2-31 * ?,把系统时间设置成23:59:00,当时间到3月1号 00:00:00,job就不执行了,再把时间调到2号,又开始执行。 按时间规则里面L代表最后,但试过 0 0 1 2-L * ? ,报格式错误。
具体这种配置是否完全满足定时任务需求、没有BUG,我也不是100%的保证,如果你测试出什么BUG,欢迎一起交流学习。
#3
表达式没问题,看看哪个地方是不是提前调用了
#4
其他地方没有调用到
#5
顶起
#6
每晚1点执行,为什么不用:0 0 1 * * ?
执行多次,会不会其它地方有额外的配置,或者其它程序在这段时间有调用?
执行多次,会不会其它地方有额外的配置,或者其它程序在这段时间有调用?