Quartz 立即执行

红亮亮 发布于 2014/11/07 16:42
阅读 11K+
收藏 1
请教下各位,怎么让Quartz随着容器的启动就马上执行任务,然后才按照表达式的规则执行,就是先随着容器启动,就马上跑一遍,后面就按照表达式规则执行
加载中
1
Likenames
Likenames
做一个监听器就行了!
红亮亮
红亮亮
嗯这个办法我知道 但是我现在就是不想弄,因为我之前的项目是依靠配置完成的,代码在我其他电脑上面,现在忘了,到底是哪个配置了
0
battyman
battyman

你拆分成两个问题,①容器启动完成一些方法 ②容器启动后加载Quartz设置的任务定时运行这些方法

如果执行顺序是①②:问题你使用Listener就可以了,问题②正常设置Quartz就行

如果执行顺序是②①:,直接贴代码:

String [] groupNames = this.scheduler.getJobGroupNames();  
for(String groupName : groupNames){  
    String[] jobNames =this.scheduler.getJobNames(groupName);  
    for(String jobName : jobNames){   
	this.scheduler.triggerJob(jobName, groupName);  
    }
}




红亮亮
红亮亮
你好 我知道这种拆分方法 可以用监听器来做,我现在的目的就是想通过直接配置来解决,因为我之前的项目就是这样来做的,但是我现在确实忘了那个配置是什么了
0
平安北京
两个不就行了,执行同样的job
红亮亮
红亮亮
嗯,就算是弄两个的话,怎么配置让其中一个随着容器的启动就执行呢
0
平安北京

引用来自“平安北京”的评论

两个不就行了,执行同样的job
<bean id="taskJobTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
		<property name="jobDetail" ref="taskJobDetail" />
		<property name="startDelay" value="1000" />
		<property name="repeatInterval" value="1000" />
		<property name="repeatCount" value="-1" />
	</bean>



红亮亮
红亮亮
回复 @平安北京 : 你这个哪个参数是保证。立即执行呢 startDelay?
平安北京
回复 @红亮亮 : 肯定马上执行了,你不试试怎么知道
红亮亮
红亮亮
你这个能随着启动就马上执行任务?是执行任务哦,不是启动Quartz哦
0
Catelyn
Catelyn
Scheduler的setStartDelay我记得,如果是spring实现smartlifecycle就行了,autostart返回true
0
Likenames
Likenames
我做的时候用的spring的版本比较 高跟 quartz没有整合,自己注入的容器 ,你可以看下,spring也实现 了自己的一个定时任务,我没有仔细看,!大概 就是因为有了自己的定时任务所以在高版本中对quartz的集成哎,不说了,都是眼泪!做监听就是做一个无用任务,他会触发所有你存在的任务,这个无用 的任务你可以周期弄到10秒钟,!
0
yeeChan
yeeChan
在调度工厂中设置 lazy-init="false"就会立刻执行job了
返回顶部
顶部