quartz集群

properties:

#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = ClusteredScheduler
org.quartz.scheduler.instanceId = AUTO
#org.quartz.scheduler.skipUpdateCheck = true
#============================================================================
# Configure ThreadPoolComboPooledDataSource
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.misfireThreshold = 6000
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 15000


org.quartz.jobStore.dataSource = freudDS
#==============================================================
#Non-Managed Configure Datasource
#==============================================================
org.quartz.dataSource.freudDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.freudDS.URL = jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=UTF-8
org.quartz.dataSource.freudDS.user = root
org.quartz.dataSource.freudDS.password = root
org.quartz.dataSource.freudDS.maxConnections = 100

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"
	   xmlns:util="http://www.springframework.org/schema/util"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
	   default-lazy-init="false">

	<!-- Quartz集群Schduler -->
	<bean id="clusterQuartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<!--<property name="Durability" value="true" />-->
		<!-- Triggers集成 -->
		<property name="triggers">
			<list>
				<ref bean="ClusterTriggerSample" />
			</list>
		</property>

		<!--  quartz配置文件路径-->
		<property name="configLocation" value="classpath:quartz_xing.properties" />
		<property name="applicationContextSchedulerContextKey" value="applicationContext" />
		<property name="jobFactory">
			<bean class="com.gzcb.creditcard.tencentcard.test.AutoWiringSpringBeanJobFactory" />
		</property>
	</bean>

	<bean id="ClusterTriggerSample" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="ClusterJobDetailSample" />
		<!-- 每10秒执行一次 -->
		<property name="cronExpression" value="0/10 * * * * ?" />
	</bean>

	<!-- Timer JobDetail, 基于JobDetailBean实例化Job Class,可持久化到数据库实现集群 -->
	<bean id="ClusterJobDetailSample" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
		<property name="durability" value="true"/>
		<property name="jobClass" value="com.gzcb.creditcard.tencentcard.test.ClusterTimerSample" />
	</bean>

	<!-- Timer JobDetail, 基于JobDetailBean实例化Job Class,可持久化到数据库实现集群 -->
<!--	<bean id="cl" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
		<property name="jobClass" value="com.gzcb.creditcard.tencentcard.test.ClusterTimerSample" />
	</bean>-->

</beans>

AutoWiringSpringBeanJobFactory:

package com.gzcb.creditcard.tencentcard.test;

import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.scheduling.quartz.SpringBeanJobFactory;

/**
 * @author xingguanghui
 * @create 2017-12-28 16:57
 **/
public class AutoWiringSpringBeanJobFactory extends SpringBeanJobFactory implements ApplicationContextAware {
    private transient AutowireCapableBeanFactory beanFactory;
    @Override
    public void setApplicationContext(final ApplicationContext context)
    {
        beanFactory = context.getAutowireCapableBeanFactory();
    }
    @Override
    protected Object createJobInstance(final TriggerFiredBundle bundle)
            throws Exception
    {
        final Object job = super.createJobInstance(bundle);
        beanFactory.autowireBean(job);
        return job;
    }
}

ClusterTimerSample:

package com.gzcb.creditcard.tencentcard.test;

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

import java.util.Date;

/**
 * @author xingguanghui
 * @create 2017-12-28 17:00
 **/
public class ClusterTimerSample  extends QuartzJobBean {
    @Autowired
    private TestQuartz testQuartz;

    @Override
    protected void executeInternal(JobExecutionContext arg0)
            throws JobExecutionException
    {
        System.out.println(new Date() + "Hello Cluster Timer sample!");
        try
        {
            testQuartz.testCluster("22222222222");
        }
        catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

TestQuartz:

package com.gzcb.creditcard.tencentcard.test;

import org.springframework.stereotype.Service;

/**
 * @author xingguanghui
 * @create 2017-12-28 16:45
 **/
@Service
public class TestQuartz {

    public void myTest(){
        System.out.println("myTest...");
    }

    public void testCluster(String name){
        System.out.println("im "+name);
    }
}

jar:

<!-- https://mvnrepository.com/artifact/com.mchange/mchange-commons-java -->
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>mchange-commons-java</artifactId>
    <version>0.2.14</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.2</version>
</dependency>

转载于:https://my.oschina.net/u/3560494/blog/1596272

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值