zoukankan      html  css  js  c++  java
  • spring和Quartz的定时功能

    一:前沿

        最近在做一个定时的功能,就是在一定时间内查询订单,然后告诉用户未付款,已付款等消息通知,而且要做集群的功能,这个集群的功能是指,我部署两套代码,其中一个定时的功能在运行,另外一个就不要运行。这中集群在刚刚开始的时候我还是理解不了的,因为这种集群是站在代码的角度老看的吧!我的这篇博客就分两篇了,一篇是定时的功能,一篇是具有集成功能(http://www.cnblogs.com/wuhao1991/p/4332446.html)的

    二:内容

       所以在网上百度了下有关集成的操作,我用的是最新的quartz的包2.2.1的,maven配置如下吧

    <dependency>
    	<groupId>org.quartz-scheduler</groupId>
    	<artifactId>quartz</artifactId>
    	<version>2.2.1</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context-support</artifactId>
    	<version>${spring-version}</version>
    </dependency>
    

     接着就是配置文件的配置了,其实很多也是在网上百度的,照着配置,就如这个http://my.oschina.net/u/853107/blog/170774,这里面的定时功能就是可以的!我的配置如下(其实有两种写法的): 

    <?xml version="1.0" encoding="UTF-8" ?>  
    <beans xmlns="http://www.springframework.org/schema/beans"  
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
           xmlns:aop="http://www.springframework.org/schema/aop"  
           xmlns:tx="http://www.springframework.org/schema/tx"  
           xmlns:context="http://www.springframework.org/schema/context"  
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
        	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd  
        	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd  
        	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
        	
        	
        	<bean id="scheduTask" class="com.gsh.graduate.quartz.ScheduTask"></bean>
        	
    <!--     	调用的对象和方法的指定 -->
         	<bean id="jobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
        			<property name="targetObject" ref="scheduTask"></property>
        			<property name="targetMethod" value="doTask"></property>
    <!--     			是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
    				<property name="concurrent" value="false"/>
        	</bean>
        	
           <bean id="myJobTrigger"  class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    	        <property name="jobDetail">
    	            <ref bean="jobTask" />
    	        </property>
    	        <property name="cronExpression">
    	            <value>0/5 * * * * ?</value>
    	        </property>
        </bean>
        
         <!--  总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
        <!-- 如果lazy-init='true',则需要实例化该bean才能执行调度程序 -->
        <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="myJobTrigger" />
                </list>
            </property>
        </bean>
            
      <!--- 下面是另外一种写法-> <!-- <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="cronExpression"> <value>0/5 * * * * ?</value> </property> <property name="jobDetail">   <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="scheduTask"></property> <property name="targetMethod" value="doTask"></property> 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 <property name="concurrent" value="false"/>   </bean> </property> </bean> </list> </property> </bean> --> </beans>

    下面这个是定时操作的方法

    package com.gsh.graduate.quartz;
    
    import java.io.Serializable;
    import java.util.Date;
    
    public class ScheduTask implements Serializable {
    	private static final long serialVersionUID = 1L;
    
    	public static void doTask(){
    		System.out.println("开始执行!!!");
    		System.out.println("执行时间:"+new Date());
    		System.out.println("执行结束");
    	}
    }	
    

    三:总结

      对于spring结合quartz的定时是不难的,难得就是在集成上面,我弄了一天都没搞定,下一篇(http://www.cnblogs.com/wuhao1991/p/4332446.html)就记载我弄的集成,最近接触了好多新东西,集成这种还是第一次接触吧!努力吧!最近要谈试用,谈了下,又没音了,真是无语啊!   

      

  • 相关阅读:
    python-pycharm中使用anaconda部署python环境
    Spring Boot 整合 Redis 实现缓存操作
    Spring中的ThreadPoolTaskExecutor
    Redis-基本数据类型与内部存储结构
    Redis如何存储对象与集合示例详解
    redis存储对象
    java在注解中绑定方法参数的解决方案
    spring boot整合JMS(ActiveMQ实现)
    springboot集成activemq
    NodeJS、NPM安装配置步骤(windows版本)
  • 原文地址:https://www.cnblogs.com/wuhao1991/p/4331613.html
Copyright © 2011-2022 走看看