我们将Apache Camel用作独立应用程序约2年。它很有效 但是每次都需要重新启动进程以升级应用程序 我们添加新路线成为一个问题。
我们正在寻找可以让我们部署的新部署解决方案 新路线无需重启主流程。
我们用XML重写我们的Java DSL路由是没有问题的 是他们中的大多数(也可能是未来的)使用自定义bean, 处理器,组件等,以注入一些太复杂的逻辑 用纯XML / Java DSL路由表示。
在搜索Camel文档后,似乎热配置XML路由 可以使用spring-boot或Karaf / OSGI。
但我不知道是否有可能"热部署"豆,处理器, 这些XML路由所需的组件等类。 OSGI / Karaf看起来 很有希望,但我从来没有使用过这两种技术,乍一看它的目的并不容易。
哪种部署方法和哪种技术可以让我们进行热部署'路线和豆类?
答案 0 :(得分:2)
如果你想热部署Java代码,那么你需要像Apache Karaf / ServiceMix / JBoss Fuse等平台之类的应用服务器,或者像Tomcat,JBoss,WildFly等传统应用服务器(用于WAR文件)。
然后你可以进行一次热部署"作为应用程序的部署。
在正在运行的JVM中热部署单个类或某些类更难,并且您需要特殊的工具,例如JRebel。
答案 1 :(得分:2)
您可以尝试使用camel-blueprint来设置上下文/路由。 通过将bean公开为osgi服务,您可以在路由中使用这些bean。 我建议你看看apache camel blueprint maven archetype和camel component archetype来开始。
Apache Karaf中的热部署非常简单,只需将捆绑包放入$ KARAF_HOME / deploy即可自动重新加载。
参考: camel-archetype-component camel-archetype-blueprint
请告诉我这个帮助。
PS:我没有足够的声誉来评论答案。