0

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

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

锁定所有作业要归功于LocalTask​​ExecutorThreadPool

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 在集群环境中并行执行作业?

4

1 回答 1

0

您是否探索过从WebLogic 端将计时器定义为集群单例服务的选项?对于您使用的版本,这些步骤可能会有所不同。

于 2011-11-22T06:13:16.810 回答