在camel blueprint xml中设置独立的ActiveMQ代理

时间:2017-06-19 17:25:45

标签: apache-camel blueprint-osgi camel-jms

我正在使用apache-camel作为路由引擎设置ServieMix实例,我的路由在blueprint.xml中定义。我正在尝试为我的蓝图配置ActiveMQ以完全与其他任何东西隔离(使用它自己的私有代理)。

这是我的骆驼蓝图XML

<?xml version="1.0" encoding="UTF-8"?>
<blueprint 
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
>

    <bean id="record_ip" class="my.service.RecordIP"/>

    <bean id="jmsConnectionFactory" 
       class="org.apache.activemq.ActiveMQConnectionFactory">
       <property name="brokerURL" value="vm://myBroker?create=true&amp;waitForStart=10000" />
       <property name="userName" value="shadow"/>
       <property name="password" value="broker"/>
    </bean>

    <bean id="pooledConnectionFactory" 
       class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
       <property name="maxConnections" value="8" />
       <property name="connectionFactory" ref="jmsConnectionFactory" />
    </bean>

    <bean id="jmsConfig" 
       class="org.apache.camel.component.jms.JmsConfiguration">
       <property name="connectionFactory" ref="pooledConnectionFactory"/>
       <property name="concurrentConsumers" value="10"/>
    </bean>

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

    <camelContext xmlns="http://camel.apache.org/schema/blueprint">

      <route id="tracing_route">
        <from uri="jetty:http://localhost:9696/trace"/>
        <inOnly uri="activemq:queue:ip_capture"/>
      </route>

      <route id="ip_capture">
        <from uri="activemq:queue:ip_capture?concurrentConsumers=1&amp;maxConcurrentConsumers=64&amp;maxMessagesPerTask=100"/>
        <bean ref="record_ip"/>
        <log message="Finished!" loggingLevel="WARN" />
      </route>
    </camelContext>

</blueprint>

我认为它根本没有使用设置,因为我收到以下错误

Could not refresh JMS Connection for destination 'ip_capture' - retrying in 5000 ms. Cause: Error while attempting to add new Connection to the pool; nested exception is javax.jms.JMSException: Could not create Transport. Reason: java.io.IOException: Broker named 'amq-broker' does not exist.

amq-broker是默认的经纪人。

我正在倾注我能找到的所有东西,但缺少一些重要的东西

我正在使用

  • ServiceMix 7.0.0
  • apache-camel / camel-blueprint 2.16.4
  • activemq-client / camel / blueprint 5.14.3

如此长的故事排序,如何正确配置ActiveMQ以使我的蓝图与其他任何东西完全隔离?

1 个答案:

答案 0 :(得分:0)

我最终并不需要这样做,因为从所有意图和目的来看,经纪人都是独立的,并且设置新经纪人不会改变任何事情。