Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel 防止camel初始化终结点_Apache Camel - Fatal编程技术网

Apache camel 防止camel初始化终结点

Apache camel 防止camel初始化终结点,apache-camel,Apache Camel,我在路由中有一个无法在本地安装的端点,因为缺少一些在本地环境中不可用且无法访问的属性 因此,当我在本地环境中启动应用程序时,会出现错误org.apache.camel.FailedToCreateRouteException。但在服务器环境中,它可以正常工作 如何防止camel在本地环境上初始化端点我有一个属性,可以确定环境是否是本地的?像这样的 <choice> <when> <simple>{{is.local}} == true&

我在路由中有一个无法在本地安装的端点,因为缺少一些在本地环境中不可用且无法访问的属性

因此,当我在本地环境中启动应用程序时,会出现错误org.apache.camel.FailedToCreateRouteException。但在服务器环境中,它可以正常工作

如何防止camel在本地环境上初始化端点我有一个属性,可以确定环境是否是本地的?像这样的

<choice>
    <when>
        <simple>{{is.local}} == true</simple>
        <to uri="direct:local.route"/>
    </when>
    <otherwise>
        <to uri="direct:server.route"/>
    </otherwise>
</choice>
但是对于from子句

来说,多亏了米卡·勒布使用配置文件的想法,我喜欢这样做

我创建了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>

现在,,如果我运行local environment-又称为set spring profile为local-它将使用适用于本地环境的路由加载camel-route-local.xml,我也不再检查is.local,如果环境不是local-又称为任何其他配置文件-它将加载主路由。

您可以使用Java DSL来完成这部分,只创建简单的RouteBuilder和根据您需要的任何内容,从部件初始化所需内容。

有更好的替代解决方案。为什么不将参数作为环境变量注入呢。然后将这些属性作为属性注入,您可以使用Camel的属性解析器将这些属性注入到from或to中

请参见此处的PropertyInput

我认为您不应该修改camel上下文来处理本地执行。我认为您应该在配置文件管理或属性配置中使用多个camel上下文instead@MickaëlB但它对端点有帮助吗?是的。在您的情况下,我认为属性将是最相关的解决方案。所以你可以像定义路由一样,在配置文件中确定值。@MikaëlB或者我甚至可以完全避免路由的定义?我不知道你的路由在做什么,但这不太可能。关键是要避免选择配置。