Apache 骆驼路线部署 - 独立?

Apache camel route deployment - Independently?

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

我还可以在其他路由已经运行时即时创建和部署新路由。

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

Karaf(Apache ServiceMix / JBoss Fuse 也是如此)支持热部署(现在 JBoss AS / WildFly 也支持)。这意味着,您可以在部署文件夹中将路由创建为独立的蓝图 xml 文件(即 xmls)。同样,您可以为每个路由设置 xml 个文件,只要您对 XML 进行更改,它就会自动重新部署。

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

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

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

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

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

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

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