2012-11-02 2 views
2

작은 비트 정보 요구 사항 :석영 작업 스로틀

나는 데이터 수집기 ​​역할을하는 몇 개의 쿼츠 작업을 사용하며 가능한 경우 다른 위치에서 데이터를 수집합니다. 그런 다음 내 DB를 업데이트하기 위해 수집기 작업에서 호출 중이거나 트리거 된 다른 작업 [데이터로드]가 있습니다.

내 요구 사항은 (병렬로 실행되는 두 개의 인스턴스가 잡스 1, 2 집 작업

수집기에서 ... N> 로더 작업을 오는 작업을 처리하는 방법을 스로틀로드 작업 일부에 두 개의 인스턴스이다)

작업 프로그램은 클러스터 된 Tomcat에 배포됩니다.

두 가지 질문 : 1) Loader 작업의 두 인스턴스가 이미 처리 중이면 Collector 작업을 대기 상태로 만들 수 있습니까? Quartz 프로그램을 사용하여 FIFO 로직을 사용하여 작업을 Loader 작업으로 조절할 수 있습니까? 또한 이미 처리 대기중인 콜렉터가 다른 데이터를 가져 오지 않도록해야합니다. 2) 두 개의 스레드로만 작업을 실행할 수있는 방법이 있습니까? 한 번에 두 개 이상의 인스턴스가 활성화되어 있지 않아야합니까? 병렬로 두 개의 인스턴스 만 실행하려면 DB 테이블에 대한 제한이 있습니다.

답변

0

생산자 - 소비자 상황이있는 것 같습니다. 일반적으로 제작자와 소비자는 대기열로 구분됩니다. 수집자에게 항목을 (영구?) 대기열에 넣고 Loader를 대기열에서 읽고 처리 스레드를 최대 2 개까지 처리하도록합니다.

+0

생산자 - 소비자 상황입니다. 그러나 목표는 중간 대기열을 피하는 것이었고 생산자 위치에서 처리 할 수있는 것만 처리하려고합니다. 그렇게하면 생산자는 무엇을 골라야할지 아직 알 수 있습니다. – user1795415

+0

대기열이 있어도 제작자가 폴링하여 거기에 물건이 있는지 확인할 수 있습니다. 더 많은 지침을 원한다면 달성하려는 목표를 조금 명확히해야합니다. – Vitaliy

+0

우리는 지속적으로 입력 폴더를보고있는 독립 실행 형 자바 프로그램 (20 개 이상의 프로그램)이 거의없는 응용 프로그램을 보유하고 있습니다. 그들은 파일을 집어 낸 다음 작업자 스레드로 넘깁니다. 단 하나의 작업자 프로그램 만 사용할 수 있으며 DB 자원에 대한 cuncurrency 문제로 인해 두 인스턴스 만 실행할 수 있습니다. 우리는 Java 스레드를 사용하여 작업자 스레드에 대한 조절을 처리합니다. 우리가하려고하는 것은 standalobe 프로그램을 없애고 웹 서버에 배치 된 Quartz 배치 프로그램으로 변환하는 것입니다. 또한 클러스터 환경에서 스레드를 제거하려고합니다. – user1795415