2017-05-05 109 views
0

我有一個端點不能在本地安裝 - 由於某些缺失的屬性不可用並且無法在本地環境中訪問。阻止駱駝初始化端點

因此,當我在本地環境中啓動應用程序時,出現錯誤org.apache.camel.FailedToCreateRouteException。但在服務器環境中,它工作正常。

如何防止駱駝從本地環境初始化端點(我有一個屬性,可以確定環境是否本地或不)?事情是這樣的

<choice> 
    <when> 
     <simple>{{is.local}} == true</simple> 
     <to uri="direct:local.route"/> 
    </when> 
    <otherwise> 
     <to uri="direct:server.route"/> 
    </otherwise> 
</choice> 

from條款

+0

我想你不應該修改你的駱駝上下文來處理本地執行。我認爲你應該使用多個駱駝上下文與配置文件管理或屬性配置,而不是 –

+0

@MickaëlB,但它會幫助終端嗎? – lapots

+1

是的。就你而言,我認爲這些物業將是最相關的解決方案。所以你可以像''一樣定義路由並確定配置文件中的值。 –

回答

1

由於MickaëlB的主意,用配置文件,我不喜歡這樣。我建立了camel-route-local.xmlcamel-route.xml。第一個文件包含應該在本地環境中工作的路線。第二 - 運行端點的路線不適用於本地環境。文件camel-context.xml包含camelContext定義的定義。

在我的主要application-context.xml我在文件的最後添加了這些行現在

<beans profile="default"> 
    <import resource="classpath:camel-route.xml"/> 
    <import resource="classpath:camel-context.xml"/> 
</beans> 

<beans profile="LOCAL"> 
    <import resource="classpath:camel-route-local.xml"/> 
    <import resource="classpath:camel-context.xml"/> 
</beans> 

,如果我跑當地環境 - 又名設定spring配置文件作爲LOCAL - 它會加載camel-route-local.xml與當地工作路線環境(我也擺脫了檢查is.local),如果環境不是LOCAL - 也可以是任何其他配置文件 - 它將加載主要路線。

0

您只能使用Java DSL(僅創建簡單的RouteBuilder)並根據您需要的初始化所需的「from」部分。

0

有「更好」的替代解決方案。爲什麼不把你的參數注入爲環境變量。然後將這些屬性注入爲屬性,並且可以使用駱駝的屬性解析器將屬性注入到from()to()中。

看到這裏下「propertyinject」 http://camel.apache.org/properties.html