【发布时间】:2020-01-11 10:36:14
【问题描述】:
我正在尝试确定是否应该将多个 blueprint.xml 文件打包到一个我想要部署到 karaf 的 OSGi 包中。每个 blueprint.xml 文件都有一个骆驼上下文。我试图把我所有的蓝图都扔到 OSGI-INF/blueprint 文件夹中,但是我收到一个错误提示
Name 'jms' is already in use by a registered component
这似乎有道理,因为我在每个 blueprint.xml 中都这样做
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://0.0.0.0:61616"/>
<property name="userName" value="karaf"/>
<property name="password" value="karaf"/>
</bean>
</property>
</bean>
我应该这样做吗?或者每个 CamelContext 是它自己的捆绑包会更好吗?我已经看到了这个https://camel.apache.org/manual/latest/faq/why-use-multiple-camelcontext.html,它说当多个 CamelContexts 被部署为独立的包时会有意义。那么这里的最佳做法是什么:
- 每个 CamelContext 都有自己的 blueprint.xml,与必要的 bean 捆绑到一个 osgi-bundle 中?
- 一个包含所有必要 bean 的包,只需将 blueprint.xml 文件放到 karaf 的部署文件夹中?
- 一个 CamelContext 可以导入所有其他 CamelContext,并与所有必要的 bean 捆绑在一起?
【问题讨论】: