現在,我使用Spring引導Camel。使用Spring,我可以將我的Camel上下文指向它們各自的屬性文件,然後在引導時注入它們。我的問題是,我現在想將我的屬性從文件移動到數據庫,但仍然可以像以前一樣使用屬性佔位符。要做到這一點,最好的方法是什麼?來自DB的駱駝上下文屬性
我注意到有一個PropertiesResolver
接口,我可以實現,但我不知道如何告訴駱駝我的實現。駱駝的文件在這方面非常缺乏。
我也不會反對讓Spring從數據庫中獲取屬性,儘管我沒有看到發生這種情況。
現在,我使用Spring引導Camel。使用Spring,我可以將我的Camel上下文指向它們各自的屬性文件,然後在引導時注入它們。我的問題是,我現在想將我的屬性從文件移動到數據庫,但仍然可以像以前一樣使用屬性佔位符。要做到這一點,最好的方法是什麼?來自DB的駱駝上下文屬性
我注意到有一個PropertiesResolver
接口,我可以實現,但我不知道如何告訴駱駝我的實現。駱駝的文件在這方面非常缺乏。
我也不會反對讓Spring從數據庫中獲取屬性,儘管我沒有看到發生這種情況。
我想我會更新與我發現的工作。這可能不是實現它的最佳方法,但它可以工作,而且我不必修改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連接的適當值的路由將具有注入屬性組件的屬性,就好像它們來自屬性文件。
PropertiesResolver旨在幫助Camel從OSGi包或常規類路徑中找到屬性文件。
如果你想設置你的老闆PropertiesResolver,你可以嘗試使用org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer。
您可以在那裏注入您的客戶實施PropertiesResolver。
不幸的是,這似乎並沒有像我希望的那樣工作,從而無法從數據庫中提取屬性。我已經找到了一種做我想做的事情的方式,但是我一直遇到另一個問題(我認爲這個問題與這個問題是正交的)。 http://stackoverflow.com/questions/17731225/camel-custom-propertiescomponent當我找出這個問題的答案時,我會更新這一個。 – GJK