2017-05-05 108 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