我们开发了基于Karaf和Apache Camel的应用程序。虽然我们的应用程序完全基于 bundle (OSGI),但我们还在启动时加载Camel上下文(及其“路由上下文”),这意味着我们已经定义了一些静态路由。
我的问题是。有没有一种方法可以在应用程序运行时动态加载路由,而无需重新读取 Camel 上下文,因为这将重置/重新启动已经存在的路由。这同样适用于已经创建的路线,例如,如果我们想要编辑已经存在的路线。
整个想法是,我们计划将路线放入数据库中,因此数据库将由 GUI 进行编辑。
那么执行此操作的最佳方法是什么?我不相信这确实是在添加、编辑路由等情况下重新加载 OSGI 包的最佳方法...
在应用程序运行过程中,或多或少,不同的端点及其相关的路由将被添加、编辑、删除。
请指教。
谢谢, 蒂霍
最佳答案
我认为一个好的方法是将您的路由分组到小的上下文中,每个上下文只有几个(甚至可能是单个)路由。然后,您重新加载该小上下文,而不会导致其他路由中断。
但是,由于您不相信这种方法,因此您可以使用 CamelContext 上的方法轻松添加和删除路由。创建一个路线构建器,从您的数据库构建路线并使用 addRoutes和 removeRoute .
关于osgi - 在 Apache Camel 中动态加载路由的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23355393/