Spring quartz配置org.quartz-2.2.3

一、timer-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- 定时器配置 开始 -->
	
    <!-- 第1种: SimpleTriggerFactoryBean 配置 -->
    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
        <property name="jobDetail">
        	 <bean name="quartzJobDetailFactory" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        	 		<!-- 实现Job接口的任务类 -->
        			<property name="jobClass" value="com.enker.manager.timer.QuartzTimer"/>
        			<!-- 为任务所对应的JobDataMap提供值 -->
        			<property name="jobDataAsMap">
						<map>
							<entry key="timerMgr" value-ref="timerMgr"></entry>
						</map>
					</property>
    		</bean>
    	</property>
        <!-- 启动(单位毫秒) -->
        <property name="startDelay" value="10000"/>
        <!-- 重复执行次数 -->
        <property name="repeatCount" value="0"></property>
        <!-- 执行时间隔间  -->
        <property name="repeatInterval" value="3000"/>
    </bean>
	
	
	
    <!-- 第2种: CronTriggerFactoryBean 配置 -->
    
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 
        <property name="jobDetail">
        	<!-- 使用MethodInvokingJobDetailFactoryBean -->
    		<bean name="quartzTwoJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        		<property name="targetObject">
        			<bean id="quartzTwoBean" class="com.enker.manager.timer.QuartzTwo"/>
        		</property>
        		<property name="targetMethod" value="test"/>
    		</bean>
    	</property>
        <!-- 每5秒执行一次 -->
        <property name="cronExpression" value="0/5 * * * * ?"/>
    </bean>
	 
	 
    <!-- 配置SchedulerFactoryBean调度器 -->
    <bean id="quartzTimer" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="simpleTrigger"/>
            </list>
        </property>
        <property name="quartzProperties">
            <map>
                <!-- 1 job thread, change this if more jobs added -->
                <entry key="org.quartz.threadPool.threadCount" value="30"/>
            </map>
        </property>
    </bean>
    
</beans>
二、spring核心配置中引入
<!-- 导入定时器配置 -->
<import resource="classpath:timer-context.xml"/>
三、QuartzTimer
<pre name="code" class="html">package com.enker.manager.timer;

import java.util.List;


import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;


import com.enker.core.util.DateUtil;
import com.enker.manager.CoreConst;
import com.enker.manager.tool.util.QuartzUtil;
import com.enker.persistent.model.TimerModel;
import com.enker.service.mgr.TimerMgr;

public class QuartzTimer  extends QuartzJobBean {

	 private Logger log = Logger.getLogger(this.getClass());
	 private TimerMgr timerMgr;

	 @Autowired
	 public void setTimerMgr(TimerMgr timerMgr) {
		this.timerMgr = timerMgr;
	 }
	@Override
	protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
		System.out.println("Quartz-定时器启动:"+DateUtil.thisDateTime());
		
		try {List<TimerModel> timerList = timerMgr.findTimerByState(CoreConst.BUS_STATE_START); 
    		for(TimerModel timer :timerList){ 
    			QuartzUtil.registJobToScheduler(timer); 
    		}
		} catch (Exception e) {
			log.error("定时器运行异常!",e);
		}
		
	}
}




                
### 回答1: scheduler类:'org.quartz.core.quartzscheduler' - 在本地运行。尚未启动。当前处于待机模式。执行的作业数量:,使用线程池'org.quartz.simpl.simplethreadpool' - 具有20个线程。使用作业存储'org.springframework.scheduling.quartz.localdatasourcejobstore' - 支持持久性并且是集群化的。 ### 回答2: 这段话是关于Quartz调度器类的一个描述。Quartz是一个广泛使用的Java任务调度框架,它有一个核心调度器类- 'org.quartz.core.quartzscheduler'。这个调度器类在本地运行,但还没有启动,目前处于待机模式。待机模式意味着调度器已准备好开始调度任务,但尚未执行任务。截止到目前为止,还没有执行任何任务,因为任务调度还没有开始。 Quartz调度器使用线程池来管理任务的执行。这个调度器所使用的线程池是'org.quartz.simpl.simplethreadpool',该线程池有20个线程可以同时执行任务。这意味着该调度器可以同时执行20个任务。 Quartz调度器还使用一个名为'org.springframework.scheduling.quartz.localdatasourcejobstore'的作业存储来支持任务的持久性,这个作业存储可以集群化。作业存储是一个持久化任务数据的机制,可以将任务调度信息存储在持久化存储中,以便在系统关闭或重新启动时能够恢复任务。 总的来说,Quartz调度器类是一个非常有效的任务调度框架,它可以处理多个并发任务,并具有独特的线程池和作业存储机制,能够提供一些非常有用的功能,例如持久化任务数据和集群化等,从而使任务调度变得更加灵活和可靠。 ### 回答3: scheduler类是一个Java编写的调度器。它经常被用来定时执行任务,如定时发邮件、备份数据库、清理日志等。在这里,scheduler类的名称是“org.quartz.core.quartzscheduler”,表示它的核心代码是使用Quartz框架编写的。现在,这个scheduler类处于本地模式运行。即它是在本地计算机上运行的,并且还没有被启动。因此,目前处于待机状态。 在待机状态下,scheduler类并没有执行任何任务,所以它已经执行的任务数是0。为了让scheduler类执行任务,我们需要启动它。但是,任务的执行需要线程池的支持。在这里,scheduler类使用的是一个叫做“org.quartz.simpl.simplethreadpool”的线程池,它包含了20个线程。这意味着,scheduler类可以在启动后同时执行20个任务。 在任务执行过程中,scheduler类需要将任务的状态持久化。这意味着即使scheduler类重新启动,它也能知道哪些任务已经被执行,哪些任务还没有被执行。为了达到这个目的,scheduler类使用了一个叫做“org.springframework.scheduling.quartz.localdatasourcejobstore”的job-store,它支持持久化,也支持集群。这意味着,即使在多台计算机之间,scheduler类也能持久化任务的状态,并且不出现数据冲突的问题。 综上所述,scheduler类是一个非常强大的调度器,可以支持多线程执行任务,支持状态持久化,并且可以在多台计算机之间共享。因此,它在许多应用程序中都被广泛使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值