Apache camel “最佳解决方案”;“热部署”;ApacheCamel路由和bean类?

Apache camel “最佳解决方案”;“热部署”;ApacheCamel路由和bean类?,apache-camel,osgi,apache-karaf,Apache Camel,Osgi,Apache Karaf,我们将ApacheCamel作为一个独立应用程序使用约2年。它非常有效 但是每次都需要重新启动程序来升级应用程序 我们添加新路线成为一个问题 我们正在寻找一种新的部署解决方案,可以让我们部署 无需重新启动主进程即可创建新路由 我们用XML重写JavaDSL路由没有问题,但问题是 他们中的大多数人(可能还有未来的人)都使用定制的bean, 处理器、组件等,以注入一些过于复杂的逻辑 可以用纯XML/JavaDSL路由表示 在搜索了Camel文档之后,热部署XML路由似乎很有用 可以使用弹簧靴或Kar

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

我们正在寻找一种新的部署解决方案,可以让我们部署 无需重新启动主进程即可创建新路由

我们用XML重写JavaDSL路由没有问题,但问题是 他们中的大多数人(可能还有未来的人)都使用定制的bean, 处理器、组件等,以注入一些过于复杂的逻辑 可以用纯XML/JavaDSL路由表示

在搜索了Camel文档之后,热部署XML路由似乎很有用 可以使用弹簧靴或Karaf/OSGI

但我不知道是否有可能“热部署”bean、处理器、, 这些XML路由所需的组件等类。OSGI/Karaf外观 很有希望,但我从未使用过这两种技术,乍一看不容易理解它们的用途


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

如果你想热部署Java代码,那么你需要一个应用服务器平台,比如ApacheKaraf/ServiceMix/JBoss Fuse等,或者一个传统的平台,比如Tomcat、JBoss、WildFly等(用于WAR文件)

然后,您可以将“热部署”作为应用程序的部署


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

您可以尝试使用camel blueprint来设置上下文/路由。 通过将bean公开为osgi服务,您可以在路由中使用这些bean。 我建议您开始研究ApacheCamel蓝图maven原型和camel组件原型

ApacheKaraf中的热部署很简单,只需将捆绑包放入$Karaf_HOME/deploy中,它就会自动重新加载

参考:

如果这有帮助,一定要告诉我


PS:我没有足够的声誉来评论,因此答案是肯定的。

当与Apache Karaf一起部署时,路由是否在独立的上下文中运行?路由能否利用位于“osgi包”中的bean类" ? 如果是,那么Karaf就是答案,因为我们主要关心的是在部署一条路线时不要停止其他路线。beans类非常特定于路由,因此我们可以在路由之前部署包含路由bean的osgi捆绑包,并且仅在需要更新捆绑包时停止此路由。关于如何使java Bean对热部署的springDSL路由可见,您能否更具体一点?另外,每个部署的文件(jar、war、xml)都被转换成单独的OSGI包。并且OSGI包默认情况下不具有访问其他代码的权限,它们应该在清单文件的导入部分描述所需的包。xml文件中并没有任何OK,这似乎证实了我对ApacheKaraf/OSGI的看法。谢谢您可能需要阅读一些关于karaf及其功能生态系统的资料,以防止在部署期间发生警告等。当然可以。在深入研究之前,我需要首先验证这项技术是否符合我们的需求。