我有一个带有2个实例和一些cronjobs不时运行的webapp。当只有一个调度程序实例正在运行时,cronjobs会在彼此之后触发,下一个等待第一个完成,并且这正是我希望它如何运行,因为几乎每个cronjob都访问相同的数据。
但是,如果我在第二个实例中启动调度程序,则第二个cronjobs在第一个完成之前启动。
我找到了一些"解决方案"并实施了tehm,但他们没有工作。
my quartz.properties
# Use the MongoDB store
org.quartz.jobStore.class=com.novemberain.quartz.mongodb.MongoDBJobStore
# MongoDB URI (optional if 'org.quartz.jobStore.addresses' is set)
org.quartz.jobStore.mongoUri=
# comma separated list of mongodb hosts/replica set seeds (optional if 'org.quartz.jobStore.mongoUri' is set)
org.quartz.jobStore.addresses=mongodb://localhost:27017
# database name
org.quartz.jobStore.dbName=mytDb
# Will be used to create collections like mycol_jobs, mycol_triggers, mycol_calendars, mycol_locks
org.quartz.jobStore.collectionPrefix=quartz
# thread count setting is ignored by the MongoDB store but Quartz requries it
org.quartz.threadPool.threadCount=1
#set to true to enable the cluster funktions
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000
org.quartz.scheduler.instanceId=AUTO
如你所见,我有一个1的线程,我认为发生的是当有两个实例运行时有2个线程。
那么如何配置石英,有两个Scheduler实例在运行,但只有一个正在进行工作,第二个是在一个实例崩溃时使用。
我还在我的Job类中添加了@DisallowConcurrentExecution
,但这似乎也没有用。