Spring实战:MethodInvokingJobDetailFactoryBean使用与分析

主要举例使用 MethodInvokingJobDetailFactoryBean。

定义一个Job类

1
2
3
4
5
6
7
8
9
public class OffsetsQuartz {

public void jobQuartz() {
String[] clusterAliass = SystemConfigUtils.getPropertyArray("kafka.eagle.zk.cluster.alias", ",");
for (String clusterAlias : clusterAliass) {
execute(clusterAlias);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<bean id="offsetsSchedule" class="org.smartloli.kafka.eagle.web.quartz.OffsetsQuartz" />
<!-- Method for configuring scheduling specific execution. -->
<!-- task1 -->
<bean id="offsetsDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="offsetsSchedule" />
<property name="targetMethod" value="jobQuartz" />
<property name="concurrent" value="false" />
</bean>
<!-- Configure the trigger time for scheduling execution. -->
<bean id="offsetsTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="offsetsDetail" />
<property name="cronExpression">
<!-- per 5min 每5分钟重启一次-->
<value>0 0/5 * * * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- All scheduling lists. -->
<ref local="offsetsTrigger" />
</list>
</property>
</bean>

文章目录