问题描述
我对这个话题很陌生,需要一些解释......
我们有一个正在运行的 ActiveMQ-Server,现在应该使用 Apache Camel 路由和处理来增强它.我们的整个配置都是基于 XML 的.
我的第一个方法是在我们的 activemq.xml 的末尾做一个简单的 <import resource="camel.xml">
,但这似乎是错误的路径.>
这些是当前的传输连接器:
<!-- DOS 保护,将并发连接数限制为 1000,帧大小限制为 100MB --><transportConnector name="openwire" uri="tcp://localdev:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="amqp" uri="amqp://localdev:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="stomp" uri="stomp://localdev:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="mqtt" uri="mqtt://localdev:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="ws" uri="ws://localdev:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="mqtt+ws" uri="ws://localdev:1884?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="vm" uri="vm://localdev"/></transportConnectors>
这是我们的camel.xml:
无论我进行什么配置,消息都不会从主题路由到队列,我会收到日志消息:
Broker localhost 未启动,因此使用 localdev连接器 vm://localhost 启动
我是否采用了错误的方法?
非常感谢任何帮助
问题可能在于使用 RuntimeConfigurationPlugin 从 kahadb alogn 加载了大量持久主题吗?加载和创建所有主题需要一段时间,特别是将 log4j 设置为调试.此外,RuntimeConfigurationPlugin 要求代理在初始化期间设置start=false".请参阅此处
your import <import resource="camel.xml"/>
必须在 broker 和 beans 元素之间,如果camel.xml
与 activemq.xml
位于同一文件夹中:
</broker><import resource="camel.xml"/></豆类>
尝试删除 <import resource="camel.xml"/>
并将 camel.xml
的内容直接添加到 activemq.xml
通过删除 元素:
</broker><camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"depends-on="broker-localdev" ><route id="devRawMap"><description>重定向测试消息</description><来自 uri="activemq:topic:alpha.topic.DEV.INTERNAL.*.RAW"/><to uri="activemq:queue:alpha.queue.DEV"/></路线><route id="liveMap"><description>重定向实时数据</description><from uri="activemq:topic:devRoot.topic.LIVE.*.RAW"/><to uri="activemq:queue:devRoot.queue.LIVE"/></路线></camelContext><bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" ><属性名称="connectionFactory"><bean class="org.apache.activemq.ActiveMQConnectionFactory"><property name="brokerURL" value="tcp://localhost:61616"/><property name="userName" value="user"/><property name="password" value="pass"/></bean></属性></bean></豆类>
I'm pretty new to this topic and need some explanation...
We have a running ActiveMQ-Server, which should now be enhanced with Apache Camel routing and processing. Our whole configuration is XML based.
My first approach was to do a plain <import resource="camel.xml">
at the end of our activemq.xml, but this seems to be the wrong path.
These are the current transortConnectors:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://localdev:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://localdev:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://localdev:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://localdev:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://localdev:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt+ws" uri="ws://localdev:1884?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="vm" uri="vm://localdev" />
</transportConnectors>
And this is our camel.xml:
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<camelContext id="camel" depends-on="broker-localdev" xmlns="http://camel.apache.org/schema/spring">
<route id="devRawMap">
<description>Redirect for test message</description>
<from uri="activemq:topic:alpha.topic.DEV.INTERNAL.*.RAW"/>
<to uri="activemq:queue:alpha.queue.DEV"/>
</route>
<route id="liveMap">
<description>Redirect for Live data</description>
<from uri="activemq:topic:devRoot.topic.LIVE.*.RAW"/>
<to uri="activemq:queue:devRoot.queue.LIVE"/>
</route>
</camelContext>
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" >
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="vm://localdev?create=false"/>
<property name="userName" value="user"/>
<property name="password" value="pass"/>
</bean>
</property>
</bean>
</beans>
Whatever configuration I make, the messages are not routed from topic to queue and I get the log messages:
Broker localhost not started so using localdev instead
Connector vm://localhost started
Am I following the wrong approach to this?
Any help is highly appreciated
[EDIT 01]
Is the problem maybe in having alot of persisted topics beingh loaded from kahadb alogn with using the RuntimeConfigurationPlugin?It takes a while until all topics are loaded and created, especial with having log4j set to debug.Furthermore the RuntimeConfigurationPlugin requires the broker to set "start=false" during init. see here
your import <import resource="camel.xml"/>
must be between broker and beans elements like this if the camel.xml
is in the same folder than activemq.xml
:
</broker>
<import resource="camel.xml"/>
</beans>
try by removing <import resource="camel.xml"/>
and adding directly the content of camel.xml
to the activemq.xml
by removing <beans>
element :
</broker>
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" depends-on="broker-localdev" >
<route id="devRawMap">
<description>Redirect for test message</description>
<from uri="activemq:topic:alpha.topic.DEV.INTERNAL.*.RAW"/>
<to uri="activemq:queue:alpha.queue.DEV"/>
</route>
<route id="liveMap">
<description>Redirect for Live data</description>
<from uri="activemq:topic:devRoot.topic.LIVE.*.RAW"/>
<to uri="activemq:queue:devRoot.queue.LIVE"/>
</route>
</camelContext>
<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"/>
<property name="userName" value="user"/>
<property name="password" value="pass"/>
</bean>
</property>
</bean>
</beans>
这篇关于新手 : ActiveMQ with Camel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!