2014-11-14 1 views
2

SUSPEND 상태 처리에 관한 질문을하고 싶습니다.ConnectionStateListener에서 큐레이터 SUSPEND 상태를 처리하는 가장 좋은 방법

I 동시 실행중인 작업 목록에 대한 작업 코디네이터에 큐레이터/ZK를 사용하고 있습니다 : 여기

이 배경이다. 매 순간을 위해, 모든 노동자 (별도의 VM에 각 작업 실행)를 호출하여 ZK에서 작업 (잠금)을 취득하려고하면 작업이 잠금을 얻을

lock = new InterProcessSemaphoreMutex(zkClient, task); 
boolean hasLock = false; 
hasLock = lock.acquire(1, TimeUnit.SECONDS); 

경우,이 작업을 할 것입니다.

리트리버 잠금/작업을 담당하는 클래스는 ConnectionStateListener 인터페이스를 구현합니다. 노동자에 관계없이 ZK의 연결 상태를 잠금 을 획득하려고하기 때문에 아무것도하지 않고, :

  • 재 연결 : 그리고 아래 현재 구현입니다.

  • LOST : 연결이 끊어 지므로 잠금을 해제하십시오.

  • 수탁자 : ??????

내 질문은 SUSPEND 상태 (기본적으로 분실로 처리)를 입력하거나 다른 작업을 수행 할 때 잠금을 해제해야합니까?

일시 중지 상태를 처리하는 가장 좋은 방법은 무엇입니까?

감사합니다,

답변

2

난 당신이 page의 끝 부분에 주석을 본 것 같아요.

중단 상태 및 손실 상태 변경에 대해 ConnectionStateListener 및 감시를 추가하는 것이 좋습니다. SUSPENDED 상태가 으로보고되면 에 이어 RECONNECTED 상태가 수신되지 않는 한 계속 잠금을 유지할 수 없습니다. LOST 상태가보고되면 은 더 이상 잠금을 유지하지 않습니다. 연결이 LOST하고 잠금이 해제되지 않는 한 당신이하는 RECONNECTED 상태를받을 때까지 당신이 잠금을 :로

나는이 해석한다.