2013-07-17 3 views
0

지금 당장은 Spring을 사용하여 Camel을 부트 스트랩합니다. Spring을 사용하여 Camel 컨텍스트를 각각의 속성 파일로 지정하고 부팅 할 때이를 주입 할 수 있습니다. 내 문제는 이제 파일에서 데이터베이스로 내 속성을 이동하면서 이전과 마찬가지로 속성 자리 표시자를 사용할 수 있다는 것입니다. 이 일을하는 가장 좋은 방법은 무엇입니까?DB의 낙타 컨텍스트 속성

내가 구현할 수있는 PropertiesResolver 인터페이스가 있음을 알았지 만 Camel에게 구현 방법을 알리는 방법을 알지 못합니다. 카멜의 문서는이 분야에서 매우 부족합니다.

나는 일어나는 것을 볼 수는 없지만 Spring이 나를 위해 데이터베이스에서 속성을 얻는 것에 반대하지 않을 것입니다.

답변

0

나는 이것을 작동시키기 위해 발견 한 것으로 업데이트 할 것이라고 생각했습니다. 이것은 아마도 가장 좋은 방법은 아니지만 작동하지만 나는 Camel 소스 코드를 수정할 필요가 없었습니다. 기본적으로 모든 클래스를 RouteBuilder에서 상속하지 않고 GJKRouteBuilder (RouteBuilder에서 상속)로 상속했습니다. 그런 다음 거기에서 내가이 작업을 수행했습니다.

public class GJKRouteBuilder extends RouteBuilder { 
    @Override 
    protected void checkInitialized() throws Exception { 
     //Get properties from CamelContext using getContext() 
     //Lookup properties from DB based on CamelContext 
     //Get the properties component from the context (or create one) 
     //call setOverrideProperties() on properties component 
     super.checkInitialized(); 
    } 
} 

다시 말하면 아마도 가장 좋은 방법은 아니지만 작동합니다. 이제, GJKRouteBuilder에서 상속 받고 Spring을 통해 유선 값으로 설정된 모든 경로는 특성 파일에서 오른쪽으로 오는 것처럼 특성 구성 요소에 특성이 주입됩니다.

0

PropertyResolver는 Camel이 OSGi 번들 또는 일반 클래스 경로에서 속성 파일을 찾을 수 있도록 설계되었습니다.

당신이 설정하여 소유자 PropertiesResolver하려는 경우, 당신은 org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer를 사용하려고 할 수 있습니다.

PropertiesResolver의 고객 구현을 삽입 할 수 있습니다.

+0

불행히도 DB에서 속성을 가져올 수 없도록 만들었습니다. 나는 내가 원하는 것을 할 길을 찾았지만 그 길을 따라 다른 이슈에 직면 해있다. http://stackoverflow.com/questions/17731225/camel-custom-propertiescomponent 질문에 대한 답을 알아낼 때이를 업데이트 할 것입니다. – GJK

관련 문제