`
wx1569488408
  • 浏览: 79237 次
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    quartz 集群解决方法

    Quartz集群需要将所有调度信息(如Job、Trigger)存储在一个共享的持久化存储中,以便所有集群节点都能访问。这通常通过实现`ISchedulerFactory`接口的`StdSchedulerFactory`类和数据库连接来完成。数据库可以选择...

    spring quartz集群配置

    在Quartz集群中,多个Quartz服务器共享同一个“作业存储”(Job Store),这个存储可以是关系数据库或者分布式的存储系统。当一个服务器触发一个作业时,其他服务器会看到这个作业已经被触发,因此不会重复执行。这...

    spring boot quartz集群实现

    一个基于springboot的quartz集群dome。 向http://localhost:9090/job/addjob注入3个参数 类名:(及时定时任务的类如:com.ybjdw.site.job.NewJob) 组名:随意 定时启动方法:如“0/3 * * * * ?”(每3秒启动一次...

    quartz集群Sql大放送

    Quartz集群是为了实现高可用性和负载均衡,当一个节点故障时,其他节点能够接管任务,保证服务不中断。 在Quartz集群中,数据库扮演了至关重要的角色,因为它存储了所有关于作业和触发器的信息。集群中的各个节点...

    SSH框架+Quartz集群

    在压缩包文件"oa_ssh"中,可能包含了项目的所有源代码、配置文件、数据库脚本等资源,开发者可以通过这些文件了解和学习SSH框架与Quartz集群的整合实现,以及RABC权限管理的具体细节。通过研究和实践,可以深入理解...

    quartz集群完整应用实例

    本篇将基于"quartz集群完整应用实例"来深入探讨Quartz的集群配置与实现。 Quartz的核心概念包括Job(任务)、Trigger(触发器)和Scheduler(调度器)。Job是执行的具体任务,Trigger定义了任务何时运行,而...

    spring quartz 集群模式

    Quartz集群通过共享内存中的状态来实现任务的分配和执行,当一个节点失败时,其他节点能够接管未完成的任务。实现Quartz集群,需要配置多个Quartz服务器共享同一份数据库存储,用于保存Job、Trigger以及运行状态等...

    quartz集群各数据库中对应的表机构

    在构建Quartz集群时,为了实现高可用性和任务的分布式处理,需要在多个节点之间共享状态信息,这就涉及到数据库的支持。数据库在这里起到了存储作业和触发器信息的作用,确保在集群中的各个节点间能够正确协调和执行...

    spring集成quartz集群配置

    在IT行业中,Spring框架是Java应用开发中的基石,而Quartz则是广泛...通过上述步骤,你已经掌握了Spring集成Quartz集群配置的基本概念。在实践中,根据具体需求调整配置,可以实现高效、稳定且可扩展的任务调度系统。

    Spring+Quartz 集群

    5. **集群配置**:为了实现高可用的Quartz集群,你需要配置多个节点共享同一个数据库存储的作业和触发器信息。Quartz支持多种持久化策略,如JDBC、RAMJobStore等,选择数据库存储能保证在集群中的任务状态一致性。 ...

    Springboot集成quartz集群

    本文章是关于springboot集成quartz集群的步骤,LZ亲测。

    springboot 集成 quartz 集群 加 sql 等

    springboot 集成 quartz 集群 加 sql 等 文章介绍 单机加集群都有 https://blog.csdn.net/weixin_42749765/article/details/88532413

    quartz 集群配置

    当需要在分布式环境中运行多个Quartz实例以实现高可用性和负载均衡时,就需要进行Quartz集群配置。 在Spring集成Quartz的过程中,主要涉及以下几个核心概念和步骤: 1. **Job与Trigger**:Job是Quartz中的任务接口...

    quartz集群各种数据库建表脚本

    "quartz集群各种数据库建表脚本" 提供了在不同类型的数据库中创建Quartz集群所需的表结构。基于quartz2.2.1版本,这个脚本应该包含了创建必要的调度表,如QRTZ_JOB_DETAILS、QRTZ_TRIGGERS、QRTZ_SIMPLE_TRIGGERS等...

    Quartz集群配置和示例源码

    下面将详细阐述Quartz集群的配置以及示例源码的相关知识点。 **1. Quartz集群的核心概念** - **Job Store**: Quartz集群的关键在于共享任务存储,Job Store负责存储Job(任务)和Trigger(触发器)的信息。常见的...

    spring + quartz 集群配置

    java + quartz实现定时任务,实现集群配置,在集群环境下多节点运行定时Quartz定任务,就会存在重复处理任务的现象,为解决这一问题,下面我将介绍使用 Quartz 的 TASK ( 12 张表)实例化到数据库,基于数据库自动...

    Quartz集群简单资料(未整理)

    Quartz集群则是在单个Quartz实例的基础上,通过多台服务器的协作来提高系统的可用性和容错性,确保即使在单个节点故障时,作业仍然能够被正确地调度和执行。 在Quartz集群中,每个节点都是一个独立的Quartz ...

Global site tag (gtag.js) - Google Analytics