我有几个捆绑包(A,B和C)部署在一个OSGi容器中,每个包都包含一个CamelContext和一些路由。我有另一个捆绑包(M),其中包含一个带有路由(用于收集监控数据)和InterceptStrategy bean的CamelContext。我希望来自M的InterceptStrategy bean自动应用于容器中的所有其他CamelContext(即A,B和C中的那些),而无需修改其他捆绑包。
最终目标是将每个CamelContext中的数据导入M中的路由中,而无需对A、B或C进行任何更改以显式路由Exchange。这种方法或类似方法可行吗?
所有的CamelContext都使用Spring XML配置。
更新:其他上下文说明
捆绑包A、B和C包含负责处理数据的核心产品。捆绑包M包含一个可选的监控工具,旨在测量通过A、B和C流动的某些参数。目前,添加可选工具需要更改A、B和C中的路由,以添加额外的处理器来丰富Exchange数据并在端点之前读取监控数据。
目标是能够将Bundle M投入已经验证为工作正常的系统中,与A、B和C自动应用于现有路由,而无需修改现有且正常运行的捆绑包的配置。允许对A、B和C进行修改以支持此操作,只要更改不会使A、B和C依赖于M运行(即,ABC必须仍然在没有M的情况下运行)。
如果比使用拦截器更好的方法,我也可以接受。主要目标是:
1. 保持A、B和C与M分离(尤其是在开发过程中) 2. 确保将M与A、B和C集成尽可能简单 3. 允许M集成,而无需手动更改A、B或C
最终目标是将每个CamelContext中的数据导入M中的路由中,而无需对A、B或C进行任何更改以显式路由Exchange。这种方法或类似方法可行吗?
所有的CamelContext都使用Spring XML配置。
更新:其他上下文说明
捆绑包A、B和C包含负责处理数据的核心产品。捆绑包M包含一个可选的监控工具,旨在测量通过A、B和C流动的某些参数。目前,添加可选工具需要更改A、B和C中的路由,以添加额外的处理器来丰富Exchange数据并在端点之前读取监控数据。
目标是能够将Bundle M投入已经验证为工作正常的系统中,与A、B和C自动应用于现有路由,而无需修改现有且正常运行的捆绑包的配置。允许对A、B和C进行修改以支持此操作,只要更改不会使A、B和C依赖于M运行(即,ABC必须仍然在没有M的情况下运行)。
如果比使用拦截器更好的方法,我也可以接受。主要目标是:
1. 保持A、B和C与M分离(尤其是在开发过程中) 2. 确保将M与A、B和C集成尽可能简单 3. 允许M集成,而无需手动更改A、B或C
A
、B
和C
路由中同步执行(例如,在Exchange
上设置属性),因此仅将消息定向到异步队列是不够的。我看到在Camel 2.16.0中,直接-vm组件将能够处理无消费者条件,这将解决该问题。您是否知道在Camel 2.12.0中是否有类似的机制可用于同步但可选的路由? - VeeArr