我正在尝试创建一个通过 AMQP 与 ActiveMQ 集成的 Apache Camel 应用程序。
我一直在按照提供的'骆驼示例 spring-jms' 项目,它通过标准 TCP 连接,但我已修改为使用我的独立 ActiveMQ 5.8 安装(而不是嵌入式),我使用 TCP 可以正常工作。
ActiveMQ 配置(5672 上的 amqp)
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61610?maximumConnections=1000&wireformat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireformat.maxFrameSize=104857600"/>
</transportConnectors>
Within '骆驼服务器.xml' 我已将现有的“jms”“ActiveMQComponent”替换为“JmsComponent”,该“JmsComponent”引用“AMQConnectionFactory”,我在该“AMQConnectionFactory”上指定了连接 URL(尝试了下面的两种变体)。
amqp://guest:guest@localhost/test?brokerlist='tcp://localhost:5672'
amqp://guest:guest@/?brokerlist='tcp://localhost:5672'
<bean id="jmsConnectionFactory" class="org.apache.qpid.client.AMQConnectionFactory">
<constructor-arg index="0"
value="amqp://guest:guest@localhost/test?brokerlist='tcp://localhost:5672'" />
</bean>
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="useMessageIDAsCorrelationID" value="true" />
</bean>
使用上面的配置,服务器似乎启动正常,但是当我在“中”中添加到 amqp 队列的路由时服务器路由.java' 我在启动时遇到错误。
from("amqp:queue:numbers").to("multiplier");
Camel Server 窗口中的错误是:
[nsumer[numbers]] INFO AMQConnection - to broker at tcp://localhost:5672
org.apache.qpid.AMQException: Cannot connect to broker: connect() aborted [error code 200: reply success]
我的 ActiveMQ 窗口中的错误是:
org.apache.activemq.transport.amqp.AmqpProtocolException: Could not decode AMQP frame: hex: 414d51500101000a
Caused by: org.apache.qpid.proton.engine.TransportException: AMQP header mismatch value 1, expecting 0
感谢您在诊断此问题时提供的任何帮助。
Thanks.