"hot-deploy" Apache Camel 路由和 bean 类 的最佳解决方案?

Best solution to "hot-deploy" Apache Camel routes and beans classes?

我们将 Apache Camel 作为独立应用程序使用了约 2 年。它非常有效 很好,但每次都需要重新启动进程来升级应用程序 我们添加新路线成为一个问题。

我们正在寻找可以让我们部署的新部署解决方案 无需重新启动主进程的新路由。

我们在 XML 中重写 Java DSL 路由没有问题,但是问题 是他们中的大多数(也可能是未来的)使用自定义 bean, 处理器,组件等注入一些太复杂的逻辑 以纯 XML/Java DSL 路由表示。

通过 Camel 文档搜索后,热部署 XML 路由似乎 可以使用 spring-boot 或 Karaf/OSGI.

但我不知道是否可以 "hot-deploy" bean,处理器, 这些 XML 路线所需的组件等 类。 OSGI/Karaf长相 很有前途,但我从未使用过这两种技术,乍一看并不容易掌握它们的用途。

哪种部署方法和技术可以让我们“热部署”路由和 bean 类?

如果你想热部署 Java 代码,那么你需要一个应用程序服务器,比如 Apache Karaf/ServiceMix/JBoss Fuse 等平台,或者像 Tomcat、[=19 这样的传统平台=]、WildFly 等(用于 WAR 个文件)。

然后您可以执行 "hot deployment" 作为应用程序的部署。

在 运行 JVM 中热部署单个 class 或一些 classes 比较困难,您需要特殊的工具,例如 JRebel。

您可以尝试使用 camel-blueprint 来设置 context/route。 通过将您的 bean 公开为 osgi 服务,您可以在路由中使用这些 bean。 我建议您先看一下 apache camel blueprint maven archetype 和 camel component archetype。

在 Apache Karaf 中进行热部署很简单,只需将捆绑包放入 $KARAF_HOME/deploy,它就会自动重新加载。

参考: camel-archetype-component camel-archetype-blueprint

如果有帮助请告诉我。

PS:我没有足够的声誉来发表评论,因此回答。