1

有没有办法通过 Spring 的 applicationConfig XML 中的 javacode 添加 ActiveMQ 组件?

我的主要目标是从外部属性文件中获取他的“brokerURL”。但是属性文件不是标准的属性文件,它是基于 XML 的,所以必须适当地解析它并获取属性。

<!-- COMPONENT BEANS -->
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="connectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="tcp://localhost:61616"/>
        </bean>
    </property>
</bean>
4

2 回答 2

1

有几种方法。

一个是真正程序化的,像这样:

org.apache.activemq.camel.component.ActiveMQComponent amq = new org.apache.activemq.camel.component.ActiveMQComponent();
amq.setConnectionFactory(new ActiveMQConnectionFactory(parseOddXml(brokerXMLConfigFile)));
camelContext.addComponent("activemq", amq);

假设您在某处有一个骆驼上下文感知 bean 来初始化您的组件。

否则,您可能只是从其他地方连接连接工厂并将其注入到 ActiveMQ 组件上的 XML 配置中。

可能是这样的

 @Configuration
 class MyAMQConfig{
   public @Bean ActiveMQConnectionFactory createCF(){
      String brokerURI = parseOddXml(brokerConfigFile); // or whatever logic here.
      return new ActiveMQConnectionFactory(brokerURI);
   }
 }

然后在 XML 中是这样的:

<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="connectionFactory" ref="activeMQConnectionFactory"/>
</bean>

或者任何其他方式,因为有多种方式可以连接 bean 并与 Camel 上下文交互。

于 2012-06-26T21:13:58.347 回答
1

为什么不只是扩展 PropertyPlaceholderConfigurer 类,以便我可以从您的 XML 文件中获取属性(使用 commons-configuration 或其他类似的包),然后在您的 spring 配置中放置一个实例?

然后只使用标准属性替换。

于 2012-06-27T03:04:44.830 回答