骆驼上下文和异常分离
Camel context and exception separation
我已经分出骆驼xml个文件喜欢
- FileA.xml
<routeContext id="routeA" xmlns="http://camel.apache.org/schema/spring">
<route id="...">
<from uri="..."/>
<to uri="..."/>
</route>
</routeContext>
- FileB.xml
<routeContext id="routeB" xmlns="http://camel.apache.org/schema/spring">
<route id="...">
<from uri="..."/>
<to uri="..."/>
</route>
</routeContext>
- Core.xml
<camelContext xmlns="http://camel.apache.org/schema/spring" >
<routeContextRef ref="routeA"/>
<routeContextRef ref="routeB" />
</camelContext>
此设置工作正常。
现在我想将 onException 添加到另一个 xml 文件中,并且需要在 Core.xml 中导入它,因为我们需要处理很多不同的异常。
<onException>
<exception>org.apache.camel.ExpressionEvaluationException</exception>
<handled>
<constant>true</constant>
</handled>
<to uri="..."/>
</onException>
问题是 <onException>
只能添加到 <camelContext>
中,所以我无法将 exception.xml 文件与 core.xml.
分开
- 有没有办法这样做(将 exception.xml 文件导入 core.xml 文件)?
- 我可以拥有多个 camel 上下文文件并将 add/import 一个上下文转换为另一个上下文吗?
请帮忙解决这个问题。
在 Camel 2.x 中,一个应用程序中可以有多个 Camel 上下文。对于 Camel 3.x,这已被删除并且 only 1 Camel Context is supported。
因此,即使在 Camel 2.x 中可以使用多个 camelContext
XML 文件(我不知道它是否有效),但至少不能未来证明。所以你应该坚持使用 1 camelContext
XML 导入 routeContext
s.
现在是错误处理程序和异常子句。在 Camel 中,它们可以具有全局作用域或路由作用域。
- 如果它们是路由范围的,那么无论如何它们都在相应的
routeContext
中。所以这里没问题
- 据我所知,如果它们是全局范围的,它们必须位于单个
camelContext
文件中
但是,您可以自由地做的是将所有错误内容放在单独的 XML 文件中,然后 在构建过程中以某种方式合并它们。例如使用 Maven 插件或类似的东西。
像这样,您的代码中有一个干净的分隔,而Camel 有一个camelContext
文件,其中包含所有内容除了单独的 routeContext
s。所以希望你们俩,你们和骆驼都能快乐:-)
我已经分出骆驼xml个文件喜欢
- FileA.xml
<routeContext id="routeA" xmlns="http://camel.apache.org/schema/spring">
<route id="...">
<from uri="..."/>
<to uri="..."/>
</route>
</routeContext>
- FileB.xml
<routeContext id="routeB" xmlns="http://camel.apache.org/schema/spring">
<route id="...">
<from uri="..."/>
<to uri="..."/>
</route>
</routeContext>
- Core.xml
<camelContext xmlns="http://camel.apache.org/schema/spring" >
<routeContextRef ref="routeA"/>
<routeContextRef ref="routeB" />
</camelContext>
此设置工作正常。
现在我想将 onException 添加到另一个 xml 文件中,并且需要在 Core.xml 中导入它,因为我们需要处理很多不同的异常。
<onException>
<exception>org.apache.camel.ExpressionEvaluationException</exception>
<handled>
<constant>true</constant>
</handled>
<to uri="..."/>
</onException>
问题是 <onException>
只能添加到 <camelContext>
中,所以我无法将 exception.xml 文件与 core.xml.
- 有没有办法这样做(将 exception.xml 文件导入 core.xml 文件)?
- 我可以拥有多个 camel 上下文文件并将 add/import 一个上下文转换为另一个上下文吗?
请帮忙解决这个问题。
在 Camel 2.x 中,一个应用程序中可以有多个 Camel 上下文。对于 Camel 3.x,这已被删除并且 only 1 Camel Context is supported。
因此,即使在 Camel 2.x 中可以使用多个 camelContext
XML 文件(我不知道它是否有效),但至少不能未来证明。所以你应该坚持使用 1 camelContext
XML 导入 routeContext
s.
现在是错误处理程序和异常子句。在 Camel 中,它们可以具有全局作用域或路由作用域。
- 如果它们是路由范围的,那么无论如何它们都在相应的
routeContext
中。所以这里没问题 - 据我所知,如果它们是全局范围的,它们必须位于单个
camelContext
文件中
但是,您可以自由地做的是将所有错误内容放在单独的 XML 文件中,然后 在构建过程中以某种方式合并它们。例如使用 Maven 插件或类似的东西。
像这样,您的代码中有一个干净的分隔,而Camel 有一个camelContext
文件,其中包含所有内容除了单独的 routeContext
s。所以希望你们俩,你们和骆驼都能快乐:-)