2012-10-15 3 views
0

클러스터 된 환경에 배포 된 응용 프로그램이 있습니다. 5 분마다 응용 프로그램은 연결된 모든 다른 응용 프로그램에 ping 작업을 전송합니다. 우리는이 작업을하기 위해 비 영구적 인 Quartz 스케쥴러를 사용했다.Java의 비 영구적 인 석영 스케줄러

클러스터 된 환경에서 하나의 노드 만이 활동을 수행하고 있습니다 (ping 조작). 이에 대한 참조 또는 샘플 코드가 있습니까? (이것은 일반 서블릿 애플리케이션입니다.)

+1

질문을 쉽게 읽을 수 있도록 몇 가지 문구를 업데이트했습니다. 그러나 첫 번째 문장의 의미에 대해서는 잘 모르겠습니다. 당신은 단 하나의 노드 **가 ** 핑을 보내고 있다고 말하고 있습니까? 나머지는 원하십니까? 또는 귀하의 ** 요구 사항 **은 단 하나의 노드가 핑을 보내도록하는 것이지만, 현재 모든 노드는 무엇입니까? –

+0

예 하나의 노드 만 ping 작업을 수행하고 있습니다. 다른 모든 노드가 ping 작업을 수행하기를 원합니다 (클러스터 환경) –

답변

0

모든 노드가 클러스터에서 작동하므로 모든 작업이 단일 시스템 (가장 유휴 상태 인 시스템)에서 실행됩니다. 이것이 클러스터링을 사용하는 이유입니다. 그러나 모든 시스템이 다른 클러스터 노드를 인식하지 못하고 독립적으로 주어진 작업을 수행하기를 원합니다. 기본적으로 Quartz (클러스터)는 전혀 필요하지 않습니다!

는 충분히 ScheduledExecutorService.html#scheduleAtFixedRate()을 사용하는 것입니다

final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 

final Runnable pinger = new Runnable() { 
    public void run() { 
     //send PING 
    } 
}; 
scheduler.scheduleAtFixedRate(pinger, 5, 5, MINUTES); 

그냥 모든 컴퓨터에이 코드를 실행하고 당신이 그것을 필요로하는 곳에 석영을 사용합니다.

+0

위의 코드를 클러스터 환경에서 테스트했는데 완벽하게 작동했습니다. 이제 저는 여기서 한 가지 더 도전하고 있습니다. 언제든지 이러한 스케줄러를 시작하고 중지 할 수있는 방법이 있습니까? –

+0

@RajeshGupta : 다른 질문을 열고 후속 링크로 의견을 말하십시오. –

관련 문제