2016-07-24 3 views
0

내 응용 프로그램에 10 개의 다른 Camel 경로가 있다고 가정하면 문제가 발생하는 동안 특정 경로 하나만 중지하고 Java 프로세서 중 하나에서 경로를 변경하고 다른 경로에는 영향을 미치지 않고 다시 배포 할 수 있습니다.아파치 낙타 루트 배포 - 독립적입니까?

다른 경로가 이미 작동하는 동안에도 새 경로를 만들어 배포 할 수 있습니다.

이것이 기본 동작이 아닌 경우이를 수행하는 데 사용할 수있는 옵션은 무엇입니까?

+0

Checkout hawtio : http : //hawt.io 그는이 작업을 위해 나에게 맞는 장갑을 사용합니다. –

답변

1

Karaf (Apache ServiceMix/JBoss Fuse도 마찬가지 임)는 최신 배포판을 제공합니다 (요즘은 JBoss AS/WildFly에서도 지원 될 수 있습니다). 즉, 배포 폴더 (xml을 의미)에서 독립적 인 청사진 XML 파일로 경로를 만들 수 있습니다. 마찬가지로 모든 경로에 대해 XML 파일을 가질 수 있으므로 XML을 변경할 때마다 자동으로 다시 배포됩니다.

이 접근법에는 몇 가지 단점이 있습니다. JPA를 처리해야하거나 경로가 사용자 정의 프로세서/클래스를 처리해야하는 경우에는 복잡합니다.

Apache ServiceMix/JBoss Fuse 프로젝트의 예제를 확인하십시오.

가벼운 무게의 Apache Karaf + Camel Route XML 파일 + Docker와 같은 마이크로 접근 방식을 취하고 싶다면이 방법을 권장합니다.

나는이 기능을 다른 컨테이너에서도 사용할 수 있습니다. 확실하지 않습니다.

+1

답장을 보내 주셔서 감사합니다. @gnanagurus. 당신이 말했듯이 커스텀 프로세서/클래스를 다루는 것은 복잡 할 수 있습니다 - 불가능합니까? 또는 몇 가지 더 복잡한 단계를 통해 달성 할 수 있습니까? –

0

org.apache.camel.CamelContext.stopRoute (id) &을 통해 경로를 중지 할 수 있습니다. 새 경로를 작성하여 컨텍스트에 추가하여 경로를 수정할 수 있습니다. 이렇게하면 런타임에 라우트의 논리를 변경할 수 있습니다.

그러면 자동으로 새 Java 프로세서를 배포 할 수 없습니다. 내 생각에이 부분은 Camel과 다르다고 생각합니다. @gnanaguru가 언급 한 OSGi/Karaf를 포함한 몇 가지 옵션 인 것 같습니다.

아마도 Java 프로세서에서 바뀔 수있는 논리를 외부 파일의 일부 JavaScript 또는 경로 자체처럼 동적으로 옮기는 것이 문제에 대한 간단한 해결책이 될 것입니다.