定时任务quartz,求思路 定时任务quartz 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 job 过多必定会增加服务器的压力,有这样的需求最好做一个定时任务平台,做成集群,只用quartz做定时管理,任务内容用java application 去完成,实现多进程 quartz 做成集群,当资源不够时就扩展节点。这样不会影响web 动态加入quartz有编程接口的,你可以到他官网去参考。而且你启动的任务怎么加的呢,启动的能加,动态的也不是问题 spring 动态添加任务 Scheduler scheduler = schedulerFactory.getScheduler();scheduler .scheduleJob(detail, trigger);这个方法应该就是添加啦,参数的话你看看api吧 SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); Scheduler sched = schedFact.getScheduler(); sched.start(); JobDetail jobDetail = new JobDetail("Income Report","Report Generation", QuartzDemo.class); jobDetail.getJobDataMap().put(" type ", " FULL "); CronTrigger trigger = new CronTrigger(" Income Report "," Report Generation "); trigger.setCronExpression("0 01 00 ? * *"); sched.scheduleJob(jobDetail, trigger);public class QuartzDemo implements Job{ public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println("执行我......."); }}如果是串行执行的话 需要 实现 StatefulJob 增加一个定时调度任务配置文件里:<beans> <!-- 定时器执行方法 --> <bean id="BBB" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="CCC" /><!-- 调用具体执行类(spring配置的bean) --> </property> <property name="targetMethod"> <value>DDD</value><!-- 调用的类(CCC)中的方法 --> </property> </bean> <!-- 设置定时器运行时间 --> <bean id="AAA" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="BBB" /> </property> <property name="cronExpression"> <value>0 0/2 * * * ?</value> </property> </bean> <!-- 总管理类,如果lazy-init='false',则容器启动时就会执行调度程序--> <!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序 --> <bean id="startQuartz" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="AAA" /> </list> </property> </bean> </beans> 这种动态添加调度的方法,freecms免费版用过,但并不是太稳定,而且有数量限制,所以在商业版中放弃了,改用一个任务执行表,来保存所有需要执行的任务,只用一个调度来扫描这个表,查找需要处理的任务,然后处理。而原来要动态添加的调度,改成了向任务表中添加数据。这样只需要一个调度,也保证了稳定性。 一次请求查了两次数据库 服务器为啥找不到我的类? forward(request, response)问题,偶尔空白,随机性的! JavaMail与Imail系统使用imap协议的问题 请问上述代码是什么意思?谢谢 web.xml <welcome-file> </welcome-file>欢迎页面无效 基于J2EE实验室排课系统 有做过CIS的么? 为什么采用rowset,有什么好处,高手请进。 (技巧提示)如何用JSP强制下载一个文件[download,contenttype] hibernate-HQL查询问题,求高手相助 关于static自动注入的问题
scheduler .scheduleJob(detail, trigger);这个方法应该就是添加啦,参数的话你看看api吧
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
JobDetail jobDetail = new JobDetail("Income Report","Report Generation", QuartzDemo.class);
jobDetail.getJobDataMap().put(" type ", " FULL ");
CronTrigger trigger = new CronTrigger(" Income Report "," Report Generation ");
trigger.setCronExpression("0 01 00 ? * *");
sched.scheduleJob(jobDetail, trigger);public class QuartzDemo implements Job{ public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("执行我.......");
}
}如果是串行执行的话 需要 实现 StatefulJob
配置文件里:
<beans>
<!-- 定时器执行方法 -->
<bean id="BBB" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="CCC" /><!-- 调用具体执行类(spring配置的bean) -->
</property>
<property name="targetMethod">
<value>DDD</value><!-- 调用的类(CCC)中的方法 -->
</property>
</bean>
<!-- 设置定时器运行时间 -->
<bean id="AAA"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="BBB" />
</property>
<property name="cronExpression">
<value>0 0/2 * * * ?</value>
</property>
</bean>
<!-- 总管理类,如果lazy-init='false',则容器启动时就会执行调度程序-->
<!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序 -->
<bean id="startQuartz" lazy-init="false"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="AAA" />
</list>
</property>
</bean>
</beans>