osgi - 在 Apache Camel 中动态加载路由的最佳方法

标签 osgi apache-camel dsl jbossfuse fabric8

我们开发了基于Karaf和Apache Camel的应用程序。虽然我们的应用程序完全基于 bundle (OSGI),但我们还在启动时加载Camel上下文(及其“路由上下文”),这意味着我们已经定义了一些静态路由。

我的问题是。有没有一种方法可以在应用程序运行时动态加载路由,而无需重新读取 Camel 上下文,因为这将重置/重新启动已经存在的路由。这同样适用于已经创建的路线,例如,如果我们想要编辑已经存在的路线。

整个想法是,我们计划将路线放入数据库中,因此数据库将由 GUI 进行编辑。

那么执行此操作的最佳方法是什么?我不相信这确实是在添加、编辑路由等情况下重新加载 OSGI 包的最佳方法...

在应用程序运行过程中,或多或少,不同的端点及其相关的路由将被添加、编辑、删除。

请指教。

谢谢, 蒂霍

最佳答案

我认为一个好的方法是将您的路由分组到小的上下文中,每个上下文只有几个(甚至可能是单个)路由。然后,您重新加载该小上下文,而不会导致其他路由中断。

但是,由于您不相信这种方法,因此您可以使用 CamelContext 上的方法轻松添加和删除路由。创建一个路线构建器,从您的数据库构建路线并使用 addRoutesremoveRoute .

关于osgi - 在 Apache Camel 中动态加载路由的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23355393/

相关文章:

java - 如何进行单元测试来测试我的 Spring/OSGi 配置?

java - Apache 菲利克斯 : Delete JAR from Load Directory without Container Shutdown

java - 路由属性和交换属性之间的 Camel 区别

java - 如何获取跳过的空白(未跳过的原始标记)?

c# - DSL 与方法调用 : pros and cons

spring - ref() 没有在 grails 上使用 spring dsl 获取嵌套映射值的 bean 配置

java - 尝试将 GWT 集成到 OSGi 包中

Liferay DXP 前端热部署

java - 等待依赖项 [(&(component=Simple)(objectClass=org.apache.camel.spi.ComponentResolver))]

java - Camel文件组件: create a file and if already exist,移动它并用时间戳重命名它