简单定时框架,
第一次接触,自学
官方DOC: http://www.quartz-scheduler.org/api/2.1.7/index.html
直接上简单例子,
先导包,
让自己写的类实现Job
public class Quartz implements Job{
public void execute(JobExecutionContext jec) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("定时打印我!~~");
}
public static void main(String[] args) throws Exception {
addJob();
}
public static void addJob(){
try {
StdSchedulerFactory factory = new StdSchedulerFactory();
Scheduler scheduler = factory.getScheduler();
JobDetail job = JobBuilder.newJob(Quartz.class).build();
Trigger t = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ?")).build();
scheduler.scheduleJob(job,t);
scheduler.start();
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
"* * * * * ?" 表达式 表示每秒执行一次, 秒,分钟,时,日,月,星期,年
有工具可以自动生成此表达式,自行查找.
JobBuilder 可以指定唯一标识:.withIdentity(String,String); 第一个String是唯一的name 标记,第二个String是唯一的group 即组名. 类似于为JobBuilder指定一个唯一的ID作表识
在Quartz使用时,有可能,消息发送一次,但是接收到是两到多条,在配置文件中指定具体方法后,添加配置
<property name="concurrent" value="false" /> //为每次发送出去的消息,添加状态标记.防止前一个线程执行job未执行完毕,后一个线程去执行新的,或者终止前面线程造成数据错误.
具体配置PS:
<bean id="myProfit"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="myJob" />
</property>
<property name="targetMethod">
<value>profit</value>
</property>
<property name="concurrent" value="false" /> <!-- 这里 -->
</bean>
<bean id="profitJob"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="myProfit" />
</property>
<property name="cronExpression">
<!-- 每5分钟执行一次 -->
<value>0 0/5 * * * ?</value>
</property>
</bean>
此为新手第一次接触Quartz,粗鄙,见谅! 此为蜗牛爬山的第一步~~
集群搭建,附大神家 : http://blog.csdn.net/gklifg/article/details/27090179
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="myJob" />
</property>
<property name="targetMethod">
<value>profit</value>
</property>
<property name="concurrent" value="false" /> <!-- 告别多线程 -->
</bean>
<bean id="profitJob"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="myProfit" />
</property>
<property name="cronExpression">
<!-- 每5分钟执行一次 -->
<value>0 0/5 * * * ?</value>
</property>
</bean>