Apache骆驼路由部署 - 独立?

时间:2016-07-24 21:03:29

标签: apache-camel integration hotdeploy

假设我的应用程序中有10个不同的Camel路由,是否可以在问题期间单独停止一个特定路由并对其进行更改(在其中一个Java处理器中)并再次部署它而不影响其他路由。

我也可以动态创建和部署新路由,而其他路由已经正常运行。

如果这些不是默认行为,可以使用哪些选项来实现此目的?

2 个答案:

答案 0 :(得分:1)

Karaf(Apache ServiceMix / JBoss Fuse也是如此)有热部署(现在JBoss AS / WildFly也可以支持)。这意味着,您可以在deploy文件夹中创建路径作为独立的蓝图xml文件(仅表示xmls)。同样,您可以为每个路径提供xml文件,每当您对XML进行更改时,它都将自动重新部署。

这种方法有一些缺点,如果您必须处理JPA或者您的路由必须处理自定义处理器/类,这将是复杂的。

查看Apache ServiceMix / JBoss Fuse项目中的示例。

我会推荐这种方法,特别是如果你想采用微容器方法 - 重量轻的Apache Karaf + Camel Route XML文件+ Docker。

几年前我已经做了这个,可能这个功能也可以在任何其他容器中实现,我不确定。

答案 1 :(得分:0)

您可以通过org.apache.camel.CamelContext.stopRoute(id)&您可以通过构建新路由并将其添加到上下文来修改它。这将允许您在运行时更改路由的逻辑。

这不会自动让您热部署新的Java处理器。我认为你问题的这个方面并不是Camel特有的 - 它们似乎是一些选择,包括@gnanaguru提到的OSGi / Karaf。

将您认为可能从Java处理器更改的逻辑移动到更具动态性的逻辑(如外部文件中的某些JavaScript或路由本身)可能会更简单地解决您的问题。

相关问题