2017-10-17 22 views
0

내 응용 프로그램은 현재 인스턴스화하고 사용하는 응용 프로그램 시작시 기본 스케줄러를 시작합니다클러스터되지 않은 Quartz Scheduler : 응용 프로그램 시작시 스케줄러 시작 및 시작 ... 여러 컴퓨터에서이 안전합니까?

이 논리는 지역 개발 시스템에서뿐만 아니라 클라우드 시스템에서 실행하고, quartz.properties 현재 비 클러스터 모드로 설정되어
@Override 
public void contextInitialized(ServletContextEvent arg0) { 
    try { 
     Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
     scheduler.start(); 
    } catch (SchedulerException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

. 또한 응용 프로그램은 JDBC 작업 저장소를 사용합니다.

저는 각 머신마다 하나의 스케줄러 인스턴스가있는 것에 대해 걱정하고 있습니다. 여러 머신에서 Quartz Scheduler를 관리하는 방법에 대한 권장 사항을 알려주십시오. 이 유스 케이스에는 클러스터링이 필요합니까?

매분마다 테스트 트리거가 실행되도록 예약했습니다. 일자리가 중복되는 일은 없지만, 실격으로 간주되지 않았던 몇 가지 분출물을 발견했습니다.

+0

유스 케이스를 자세히 설명해 주시겠습니까? 그것이 당신이 묘사하고있는 것에서 그리 명확하지 않습니다. 클러스터를 형성하여로드를 공유하려면 유스 케이스에 여러 인스턴스가 필요합니까? 아니면 지속성 지원을 찾고 있습니까? 각 노드가 자신의 작업 부하를 관리합니까? – Srinivas

+0

@Srinivas 다른 구성으로 놀고 난 후에, 나는 그 애플 리케이션을 위해 작동하는 설정을 발견했다. 아래 답변에 대해 자세히 설명하겠습니다. – plsplox

답변

0

구성 및 설정을 가지고 놀았으며 응용 프로그램에서 작동하는 설정을 발견했습니다. 응용 프로그램 서버는 클러스터 구성에서 웹 자원을 제공합니다. 내 실수로 각 응용 프로그램 서버에 클러스터되지 않은 스케줄러 인스턴스가 시작되었습니다.

현재로서는이 응용 프로그램이 예약 된 작업을 처리하기 위해 여러 대의 컴퓨터를 필요로한다고 생각하지 않습니다. 또한 Quartz의 클러스터링 기능에 대한 요구 사항 인 클라우드 서버에서 시스템 시간을 동기화하는 방법을 알지 못했습니다.

결국 하나의 스케줄러 인스턴스를 시작하는 클러스터되지 않은 단일 시스템을 사용하게되었습니다. 이 구성은 예상대로 작동하며, 이상한 버그가 사라졌습니다 (미확인 된 misfire 등).