在集群环境中使用Spring的Quartz + Workmanager

时间:2011-11-21 07:49:16

标签: spring weblogic quartz-scheduler workmanagers

我们希望在集群WebLogic环境中执行作业。 Quartz(在集群模式下运行)用于保存作业,WorkManager用于创建运行作业的线程。

但是,第一个Quartz实例会立即锁定所有作业,这会阻止另一个节点/服务器执行并行执行。

所有工作的锁定归功于LocalTaskExecutorThreadPool

public int blockForAvailableThreads() {

     // The present implementation always returns 1, making Quartz (1.6)
     // always schedule any tasks that it feels like scheduling.
     // This could be made smarter for specific TaskExecutors,
     // for example calling <code>getMaximumPoolSize() - getActiveCount()</code>
     // on a <code>java.util.concurrent.ThreadPoolExecutor</code>.
     return 1;
}

除了提供此类的另一个实现之外,是否有更好的方法使用Weblogic WorkManager在集群环境中并行执行作业?

1 个答案:

答案 0 :(得分:0)

您是否考虑过从WebLogic端将计时器定义为clustered singleton service的选项?对于您正在使用的版本,步骤可能会有所不同。