我正在尝试制作一个与ActiveMQ over AMQP集成的Apache Camel应用程序。Apache Camel AMQP - ActiveMQ AMQP头不匹配值1,期待0
我一直在提供'camel-example-spring-jms'项目,该项目已通过标准TCP连接,但我已修改为使用独立的ActiveMQ 5.8安装(而不是嵌入式),它我正在使用TCP工作正常。
主动MQ配置(AMQP在5672)
<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>
在 '骆驼的server.xml' 我已经取代现有的 “JMS” 'ActiveMQComponent' 与引用了一个 'JmsComponent' 'AMQConnectionFactory',我在其中指定了我的连接URL(尝试了以下两种变体)。
amqp://guest:[email protected]/test?brokerlist='tcp://localhost:5672'
amqp://guest:[email protected]/?brokerlist='tcp://localhost:5672'
<bean id="jmsConnectionFactory" class="org.apache.qpid.client.AMQConnectionFactory">
<constructor-arg index="0"
value="amqp://guest:[email protected]/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>
服务器似乎开始罚款与上述的配置,但是当我在“ServerRoutes.java”添加路由到AMQP队列我启动时获取一个错误。
from("amqp:queue:numbers").to("multiplier");
在骆驼服务器窗口中的错误是:
[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
任何帮助诊断这个问题appreicated。
谢谢。
嘿,约翰,所以你怎么纠正问题?您在POM中更新的Maven依赖项是什么?我使用qpid客户端版本0.24与工件ID qpid-amqp-1-0-client-jms和qpid-client并面临相同的问题。 – Soham
嘿,不幸的是,我目前无法访问代码库。不过,您似乎正在使用AMQP 1.0的正确库,请确保您的工厂等使用的是来自该库的版本,而不是拉入较旧的AMQP库实体。 –