阻止骆驼初始化端点
问题描述:
我有一个端点不能在本地安装 - 由于某些缺失的属性不可用并且无法在本地环境中访问。阻止骆驼初始化端点
因此,当我在本地环境中启动应用程序时,出现错误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
条款
答
由于MickaëlB的主意,用配置文件,我不喜欢这样。我建立了camel-route-local.xml
和camel-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
- 也可以是任何其他配置文件 - 它将加载主要路线。
答
您只能使用Java DSL(仅创建简单的RouteBuilder)并根据您需要的初始化所需的“from”部分。
答
有“更好”的替代解决方案。为什么不把你的参数注入为环境变量。然后将这些属性注入为属性,并且可以使用骆驼的属性解析器将属性注入到from()
或to()
中。
看到这里下“propertyinject” http://camel.apache.org/properties.html
我想你不应该修改你的骆驼上下文来处理本地执行。我认为你应该使用多个骆驼上下文与配置文件管理或属性配置,而不是 –
@MickaëlB,但它会帮助终端吗? – lapots
是的。就你而言,我认为这些物业将是最相关的解决方案。所以你可以像''一样定义路由并确定配置文件中的值。 –