http://my.oschina.net/laiweiwei/blog/122280
- 需求
创建多个不同的Scheduler实例,每个实例自主启动、关闭
- 问题
如果直接用
12SchedulerFactory sf =
new
StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
尝试使用:
1sf.getScheduler(
"给定名字"
)
然后再尝试通过DirectSchedulerFactory.getInstance().createXXX的方法创建Scheduler实例,结果发现这些方法的参数...:
1.createScheduler(schedulerName, schedulerInstanceId, threadPool, jobStore);
Google了很久,StackOverFlow上面也有类似的问题,但是都说没有API直接提供创建给定名字的Scheduler实例。但是无意中想起来,Quartz貌似支持配置文件初始化的,于是翻到了Quartz的默认配置文件(在其jar包里)quartz.properties。
1234567891011121314151617# Default Properties file
for
use by StdSchedulerFactory
# to create a Quartz Scheduler Instance,
if
a different
# properties file is not explicitly specified.
org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export:
false
org.quartz.scheduler.rmi.proxy:
false
org.quartz.scheduler.wrapJobExecutionInUserTransaction:
false
org.quartz.threadPool.
class
: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount:
10
org.quartz.threadPool.threadPriority:
5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread:
true
org.quartz.jobStore.misfireThreshold:
60000
org.quartz.jobStore.
class
: org.quartz.simpl.RAMJobStore
- 解决方案
显式使用StdSchedulerFactory,调用其initialize方法,并且自己定义填写配置内容:
12345678StdSchedulerFactory sf =
new
StdSchedulerFactory();
Properties props =
new
Properties();
props.put(
"org.quartz.scheduler.instanceName"
,
"你定义的名字"
);
props.put(
"org.quartz.threadPool.threadCount"
,
"10"
);#必填
sf.initialize(props);
scheduler = sf.getScheduler();
System.out.println(scheduler.getSchedulerName());
scheduler.shutdown();
- 以上方案通过初步测试使用。但是还需要在生产环境下使用看看......反馈情况将在这里补填
=================== 最新反馈 2013-05-08 11:39 ========================
经过近两个月的生产环境使用,发现以上解决方案可行,推荐使用之