我们将Apache Camel作为一个独立的应用程序使用了大约2年。它工作得很好,但每次我们添加新的路由时都需要重新启动进程来升级应用程序,这成为了一个问题。
我们正在寻找一种新的部署解决方案,使我们能够部署新的路由,而不必重新启动主进程。
对我们来说,用XML重写我们的Java DSL路由是没有问题的,但问题是,它们中的大多数(可能将来也会)利用自定义的bean、处理器、组件等注入一些太复杂的逻辑,而这些逻辑无法用纯XML/Java DSL路由来表达。
在搜索了Camel文档之后,似乎可以使用spring-boot或Karaf/OSGI来热部署XML路由。
但我不知道是否有可能“热部署”这些XML路由所需的bean、处理器、组件等类。OSGI/Karaf看起来很有前途,但我从来没有用过这两种技术,乍一看要掌握它们的目的并不容易。
哪种部署方法和哪种技术可以让我们“热部署”路由和bean类?
发布于 2018-01-19 01:30:59
如果你想热部署Java代码,那么你需要一个像平台这样的应用服务器,比如Apache Karaf/ServiceMix/JBoss Fuse等,或者像Tomcat,JBoss,WildFly等传统的(用于WAR文件)。
然后,您可以进行“热部署”,作为应用程序的部署。
在运行的JVM中热部署单个类或某些类比较困难,并且需要特殊的工具,如JRebel。
发布于 2018-01-29 15:05:27
您可以尝试使用camel-blueprint来设置上下文/路由。通过将bean公开为osgi服务,您可以在路由中使用这些bean。我建议你先看看apache camel blueprint maven原型和camel组件原型。
Apache Karaf中的热部署很简单,只需将捆绑包放到$KARAF_HOME/deploy中,它将自动重新加载。
参考:camel-archetype-component camel-archetype-blueprint
如果有帮助,一定要让我知道。
附言:我没有足够的声誉来评论,所以我的答案。
https://stackoverflow.com/questions/48303461
复制相似问题