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 - Camel 代理提示类型错误

java - 来自 Camel XMPP 的消息未通过 Openfire 到达 Pidgin

java - 将常规 Servlet 编码转变为我的 DSL 的起点

Groovy 删除字符串参数中的引号

c# - 使用 C# 作为我的 DSL——这可能吗?如果可以,如何实现?

java - OSGi:javax.annotation 冲突:Java SE 与 Java EE

java - Liferay MVC Portlet java.lang.ClassNotFoundException

java - 我是否正确使用 Apache Camel 聚合器?

http - OSGi HTTP Bundle - 绑定(bind)到两个端口

osgi - WAB和WAR的区别