2011-11-21 2 views
0

클러스터 된 WebLogic 환경에서 작업을 실행하려고합니다. Quartz (클러스터 모드에서 실행)는 작업을 지속하는 데 사용되고 WorkManager는 작업을 실행하기위한 스레드를 만드는 데 사용됩니다.클러스터 환경에서 Spring이있는 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; 
} 

다른 덕분하는 웹 로직 WorkManager를 사용하여 클러스터 환경에서 작업의 병렬 실행을 할 수있는 더 좋은 방법이 무엇입니까?

답변

0

WebLogic 측면에서 타이머를 clustered singleton service으로 정의하는 옵션을 살펴 보았습니까? 사용중인 버전에 따라 단계가 다를 수 있습니다.