2016-11-01 5 views
1

확장 성을 위해 프로덕션 환경에서 3 가지 동일한 서비스로 실행되는 apache camel 응용 프로그램이 있습니다. Camel-mail API를 사용하여이 애플리케이션에 이메일 서버 폴링을 추가하고 싶습니다. 이 세 가지 인스턴스가 동시에 서버를 폴링하지 않기를 바란다면 낙타 투표 전에 잠금 메커니즘을 사용하고 싶습니다. 그러나 우편 소비자가 소비자를 투표하고 있기 때문에, 나는이 상황에서 그들을 사용할 수 없다. 이 작업을 수행하는 쉬운 방법이 있습니까? 한마디로Camel 조건부 폴링 소비자

, 나는 경로를 아래와 같이있다 :

from("imaps://mymail...")//This polls periodically 
    .to(Processmail.class) 

그러나 나는 낙타 DSL에 아래와 같은 뭔가가 필요

from("timer:mytimer") 
    .to("direct:checkDistributedLock") 
    .choice() 
     .when(header("gotlock").isEqualTo("true")) 
     .from("imaps://..") // can not use from here!!! 
    .end() 
+0

좋은 옵션을 것 같다, 나는 당신을 감사 할 것입니다. – cacert

+0

@DariusX. 답변으로 아래에 입력하는 경우이를 수락 할 수 있습니다. 다시 감사합니다. – cacert

답변

1

pollEnrich() 당신은 폴링 소비자로에 "불러"할 수 있습니다 당신의 경로 내의 단계. 즉, "from()"처럼 사용할 수 있지만 중간 경로에 서 사용할 수 있습니다.

예 :

from("timer:mytimer") 
    .to("direct:checkDistributedLock") 
    .choice() 
     .when(header("gotlock").isEqualTo("true")) 
     .pollEnrich("imaps://mymail...") 
     .to(Processmail.class) 
    .end() 
관련 문제