【发布时间】:2015-06-30 21:24:27
【问题描述】:
我有几个包(A、B 和 C)部署到一个 OSGi 容器,每个包都包含一个 CamelContext 和一些路由。我有另一个捆绑包(M),带有一个带有路由(用于收集监控数据)的CamelContext 和一个InterceptStrategy bean。我希望 M 中的 InterceptStrategy bean 自动应用于容器中的所有其他 CamelContexts(即 A、B 和 C 中的那些),而无需修改其他包。
最终,目标是将来自每个 CamelContext 的数据窃听到 M 中的路由中,而无需对 A、B 或 C 进行任何更改以显式路由 Exchange。这种方法或类似方法是否可行?
所有的CamelContexts 都是使用 Spring XML 配置的。
更新:附加上下文
捆绑包 A、B 和 C 包含负责处理数据的核心产品。 Bundle M 包含一个可选监控工具,旨在测量流经 A、B 和 C 的数据的某些参数。目前,添加可选工具需要更改 A、B 和 C 中的路由以添加额外的Processors用监控数据丰富Exchange,并读取<to />端点之前的监控数据。
我们的目标是能够将 Bundle M 放入一个已经验证过的具有 A、B 和 C 的系统中;并让它自动应用于现有路由,而无需修改现有和工作包的配置。 可以对 A、B 和 C 进行修改以支持这一点,只要这些更改不会导致 A、B 和 C 依赖于 M 运行(即 ABC 必须仍然在没有 M 的情况下运行)。
如果有比使用拦截器更好的方法来做到这一点,我愿意接受。主要目标是:
- 保持 A、B 和 C 与 M 分离(尤其是在开发期间)
- 确保尽可能轻松地将 M 与 A、B 和 C 集成
- 无需手动更改 A、B 或 C 即可集成 M
【问题讨论】:
标签: java osgi apache-camel interceptor osgi-bundle