我有4台服务器,上面都安装了JVM。我编写了一个Java服务,Quartz定时每10分钟调用此服务。但是在这4个服务器上,每10分钟会进行4次调用。这种情况会导致竞争条件。我想在4个JVM上只运行一个服务。
使用Spring Framework该如何实现呢?
我有4台服务器,上面都安装了JVM。我编写了一个Java服务,Quartz定时每10分钟调用此服务。但是在这4个服务器上,每10分钟会进行4次调用。这种情况会导致竞争条件。我想在4个JVM上只运行一个服务。
使用Spring Framework该如何实现呢?
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = MyClusteredScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000
#============================================================================
# Configure Datasources
#============================================================================
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@polarbear:1521:dev
org.quartz.dataSource.myDS.user = quartz
org.quartz.dataSource.myDS.password = quartz
org.quartz.dataSource.myDS.maxConnections = 5
org.quartz.dataSource.myDS.validationQuery=select 0 from dual
finally
中执行此操作)。
将每个作业包装起来而不是更改调度程序的一个优点是,您可以有一些在所有计算机上运行的作业,而另一些则只在一个计算机上运行。