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