2014-01-23 2 views
0

낙타와 타이머에 대한 질문이 있습니다. 몇 가지 타이머가 있으며 그 중 하나는 런타임에 업데이트가 필요합니다. 적절한주기를 설정하기 위해 osgi 청사진을 사용하고 있습니다. 그래서 내가 예를 들어 경로에서 타이머 (내가 아는 이름으로)를 바꿀 수 있습니까?낙타 런타임 타이머 변경

답변

0

경로에 org.apache.camel.CamelContextAware를 구현하는 bean을 추가 할 수 있습니다. Camel은 시작과 관련하여 컨텍스트에 대한 참조를 삽입합니다. 컨텍스트를 사용하여 timer/quartz 끝점에 대한 참조를 가져 와서 구성을 업데이트 할 수 있습니다.

내가 알지 못하는 것은 트리거가 새 기간/cron-expression에 따라 다시 스케줄 될 수 있는지 여부입니다. endpoint를 TimerEndpoint로 캐스팅하고 직접 작업해야합니다. 새 일정을 기반으로 새 Timer 인스턴스를 설정합니다.

0

런타임에서 타이머를 변경할 수 없기 때문에 경로를 중지하고 경로에서 타이머 끝점을 업데이트 한 다음 경로를 다시 시작해야합니다.

경로의 수명주기를 제어 할 수있는 빈에서 CamelContext에 액세스 할 수 있으므로 랄프 (Ralf)의 언급이 도움이 될 수 있습니다.

그러나 또한 일

대신 타이머의 석영을 사용하는 경우 다음은 스케줄러를 업데이트 할 수있는 JMX API는/런타임에 트리거 한에 대한 제어 버스 EIP를 참조 . 당신이 업데이트

당신은뿐만 아니라 자바 코드에서 석영 JMX API를 사용하여 그렇게 할 수 있습니다 할 수있는 시각적 인 UI를 가질 수 있도록 우리는 hawtio에서이 작업을 수행.

나중에 Camel을 타이머 소비자 업데이트를 위해 개선하기 위해 Apache Camel JIRA 추적기에 티켓을 기록했습니다 : https://issues.apache.org/jira/browse/CAMEL-7153 - 그러면 쉽게 구현할 수 있습니다.