短版:
有没有办法让多个 Camel 路由,在单独的 OSGi 包(带有支持进程)中共享/合并到一个单独CamelContext
的包中,以便单个 Jetty 服务器可以将传入的请求路由到单独的包?
背景: 这是一个假设的要求,因为真正的要求是保密的......
我正在为一个网站构建一个模块化的API后端,第一阶段实现简单的客户注册,第二阶段将实现类似论坛的系统,第三阶段将实现类似wiki的系统。随着每个系统完成开发,我需要能够将新系统添加到 API 后端,而无需修改其他组件或(理想情况下)使系统脱机。
在尝试实现这样的事情时,我想将每个 API 系统放在它自己的 OSGi 包中,并使用 Camel 和 Jetty 来处理传入的 API 请求,每个系统将在 jetty 基本 URL 下注册一个路径并接收发往它的消息来自骆驼路由机制。我在这个设计中遇到了麻烦,因为如果我在每个包中配置一个路由,它们在单独CamelContext
的 s 中运行,所以第一个包运行,但第二个包尝试在同一端口上生成另一个 Jetty 服务器,但失败了。
然后,我创建了一个 OSGi 服务,该服务将采用 aRouteBuilder
并将其添加到现有的“主” CamelContext
( suspend
, addRoutes
, resume
) 中。这不起作用,因为主CamelContext
服务器在单独的 API 包中看不到服务/进程。它也不允许基于 XML 的配置。
我对解决问题的不同方法持开放态度。