2014-01-29 4 views
2

원격으로 경로를 제어하는 ​​가장 좋은 방법은 무엇입니까? 나는 벌써 Apache Zookeeper와 그 낙타와의 통합에보기를 가져 가려고했다. 그러나 내가 원하는 것이 그것으로하게 될 수 있는지 나는 확신하지 않는다.복제를 사용하여 Apache Camel 경로를 원격으로 시작/중지

내 시나리오는 다음과 같습니다. 두 개의 서로 다른 Java 응용 프로그램에서 동일한 경로가 실행되고 있습니다. 두 경로 모두 실행 중이지만 그 중 하나만 사용하면됩니다. 그러나 어떤 경로가 소비되어야 하는지를 결정할 수 있기를 원합니다. ZookeeperRoutePolicy으로 가능할 지 확실하지 않습니다. 그렇다면 어떻게해야합니까? 그렇지 않다면, 내 자신의 경로 정책을 만드는 것이 갈 길이 될 것입니다.

감사합니다.

+0

ZookeeperRoutePolicy가 어떻게 작동하는지 잘 모르겠지만 'master :'구성 요소를보고 아이디어를 얻을 수 있습니다. 나는 동물원을 사용하여 어떻게 든 "자물쇠"를 얻는다고 생각합니다. – vikingsteve

답변

1

앱 중 하나를 소비한다고 가정 해 보겠습니다. 그런 다음 앱은 일시적인 z 노드 즉 "/ consumerstarted"를 만들려고 시도하고 생성이 성공하면 소비하기 시작합니다. 어떤 응용 프로그램이 임시 노드를 먼저 만들면 소비자가됩니다. 다른 응용 프로그램은 "사육사 노드가 이미 존재합니다"종류의 예외를 가져오고 소비하지 않기로 결정할 것입니다. 이제 두 앱에서 노드가 삭제 될 때 Znode 및 감시 수신기의 시계를 설정해야합니다 (임시 앱 노드 또는 소유자 앱 종료를 명시 적으로 삭제하거나 소유자 앱 연결을 끊을 수 있기 때문일 수 있음) 사육사에게). 그런 다음 앱은 일시적인 "/ consumerstarted"Znode를 생성하여 다시 소비자가되도록 노력해야합니다.

또 다른 접근법은 다음과 같습니다. 모든 앱은 "폴더/allapps"라는 "폴더"아래에 임시 Epoxide를 등록합니다. Znodes의 이름은 고유 ID 일 수 있습니다. 예 :/allapps/uuid1,/allapps/uuid2 등 모든 앱은 데이터 변경을 위해 해당 Znode에 시계를 넣어야합니다. 데이터가 "소비 시작"과 같은 것으로 설정 될 때마다 해당 앱이 소비되기 시작해야합니다. 다른 프로그램이나 사육사 CLI에서 데이터를 설정할 수 있습니다.

BTW, https://github.com/sgroschupf/zkclient은 아주 좋은 동물원 클라이언트 라이브러리입니다.

+0

두 번째 방법은 제가 찾고있는 방법입니다. 귀하가 제안한 클라이언트를 살펴 보겠습니다. 감사! – hveiga