骆驼蓝图中bean的路由级范围

Route level scope for bean in camel blueprint

我正在开发一个 camel 应用程序,我想在其中将 bean 的范围保持在路由级别。这意味着,如果我从两个不同的路由调用一个 bean,则两个实例应该在该路由内获得 created.But 相同的单个实例应该用于该 bean。以下是我的代码:

<bean id="testbean" class="testClass">  </bean>
<camelContext id="test"
        xmlns="http://camel.apache.org/schema/blueprint">
    <route id="1">
        <from uri="timer"/>
        <to uri="bean:test"/>
    </route>
    <route id="2">
       <from uri="timer"/>
       <to uri="bean:test"/>  
    </route>
</camelContext>

这里应该在路线 2 中创建单独的 bean 实例。有想法的请多多指教

Apache Camel 等不支持路由作用域 bean。您可以拥有共享单例 bean 或原型 bean(每次调用新实例)。这些是来自 Spring XML 或 Blueprint XML.

的范围

要使用原型作用域,您需要:

  • 在 Spring/Blueprint XML
  • 中将 bean 声明为原型
  • 在 Camel 的 bean:xxx 端点中设置 cache=false 选项

你也可以考虑有两个bean,例如

<bean id="testbean" class="testClass">  </bean>
<bean id="testbean2" class="testClass">  </bean>

然后在第一条路线中使用testbean,在第二条路线中使用testbean2