qutaz+ activemq +tomcat

来源:互联网 发布:淘宝上微淘是怎么回事 编辑:程序博客网 时间:2024/05/18 02:13

 这两天在项目中有一个任务,需要灵活配置调度任务时间,并能自由启动或停止调度(下载:实例源代码)。

顺便总结一下:

applicationContext-activemq.xml:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:amq="http://activemq.org/config/1.0"
 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-2.0.xsd
     http://activemq.org/config/1.0
     http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd">

 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>classpath*:quartz.properties</value>
   </list>
  </property>
 </bean>

 <amq:broker useJmx="false" persistent="true">
  <amq:persistenceAdapter> 
          <amq:jdbcPersistenceAdapter id="jdbcAdapter" dataSource="#dataSource" createTablesOnStartup="true" useDatabaseLock="false"/> 
       </amq:persistenceAdapter> 
  <amq:transportConnectors>
   <amq:transportConnector uri="tcp://localhost:61616" />
  </amq:transportConnectors>
 </amq:broker>
 
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
      <property name="driverClassName" value="${org.quartz.dataSource.myDS.driver}"/>
      <property name="url" value="${org.quartz.dataSource.myDS.URL}"/> 
      <property name="username" value="${org.quartz.dataSource.myDS.user}"/> 
      <property name="password" value="${org.quartz.dataSource.myDS.password}"/> 
      <property name="maxActive" value="200"/> 
      <property name="poolPreparedStatements" value="true"/> 
    </bean> 

 <amq:connectionFactory id="connectionFactoryConsumer"
  brokerURL="tcp://localhost:61616" />
  
 <amq:connectionFactory id="connectionFactoryProducer"
  brokerURL="tcp://192.168.0.2:61616" />
  
 <amq:queue name="destination" physicalName="JmsQuartzTest" />

 <bean id="messageConverter" class="com.dvs.activemq.DefaultMessageConverter" />

 <bean id="jmsTemplate"
  class="org.springframework.jms.core.JmsTemplate">
  <property name="connectionFactory">
   <bean class="org.springframework.jms.connection.SingleConnectionFactory">
    <property name="targetConnectionFactory" ref="connectionFactoryProducer" />
   </bean>
  </property>
  <property name="messageConverter" ref="messageConverter"/>
 </bean>

 <bean id="messageProducer" class="com.dvs.activemq.MessageProducer">
  <property name="template" ref="jmsTemplate" />
  <property name="destination" ref="destination" />
 </bean>

 <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
  <property name="connectionFactory" ref="connectionFactoryConsumer" />
  <property name="destination" ref="destination" />
  <property name="messageListener" ref="messageListener" />
 </bean>

 <bean id="messageConsumer" class="com.dvs.activemq.MessageConsumer" />

 <bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
  <constructor-arg ref="messageConsumer" />
  <property name="defaultListenerMethod" value="addResource" />
  <property name="messageConverter" ref="messageConverter" />
 </bean>

</beans>

 

 

applicationContext-quartz.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:amq="http://activemq.org/config/1.0"
 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-2.0.xsd">

    <bean id="jobDetailBean" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.dvs.quartz.SendJob"/>
        <property name="jobDataAsMap">
            <map>
                <entry key="messageProducer" value-ref="messageProducer"/>
            </map>
        </property>             
    </bean>
    
 <bean id="jobDetailPOJO" class="com.dvs.quartz.SendPOJO">  
  <property name="messageProducer">   
   <ref bean="messageProducer"/>   
  </property>  
 </bean>
  
 <bean id="targetTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">   
  <property name="targetObject">   
   <ref bean="jobDetailPOJO" />   
  </property>   
      <property name="targetMethod">   
      <value>execute</value>   
     </property>   
 </bean>      
  
 <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
        <property name="jobDetail" ref="jobDetailBean"/>
        <property name="repeatInterval" value="1000"/>
        <property name="startDelay" value="1000"/>
    </bean>
      
 <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">   
         <property name="jobDetail">   
             <ref bean="targetTask" />   
         </property>   
         <property name="cronExpression">   
             <!-- 排列顺序 秒 分 小时 日期 月 星期 年 -->
             <value>0 * * * * ?</value>   
         </property>   
 </bean>   
   
    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
    <ref bean="simpleTrigger"/>
                <ref bean="cronTrigger"/>   
            </list>
        </property>
    </bean>
   
</beans>

原创粉丝点击