【发布时间】:2016-05-16 03:12:30
【问题描述】:
我正在运行 rabbitmq server 3.1.5 并尝试从 Qpid 6.0.0 客户端(均在 Linux 上运行)连接到此代理。 rabbitmq 代理正在使用 amqp 0-9-1。当我尝试从 Qpid 客户端连接时,它会因“连接重置”而失败。从 Qpid 客户端堆栈跟踪(我已经屏蔽了 IP 地址的前两个八位字节):
Caused by: org.apache.qpid.AMQException: Cannot connect to broker (tcp://xx.yy.224.41:5672): Connection reset [error code 200: reply success]
at org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:248)
at org.apache.qpid.client.AMQConnection.makeBrokerConnection(AMQConnection.java:732)
at org.apache.qpid.client.AMQConnection.makeConnection(AMQConnection.java:504)
... 5 more
Caused by: org.apache.qpid.transport.ConnectionException: Connection reset
at org.apache.qpid.transport.ConnectionException.rethrow(ConnectionException.java:67)
at org.apache.qpid.transport.Connection.connect(Connection.java:277)
at org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:227)
... 7 more
在 RabbitMQ 代理端,日志文件显示:
=INFO REPORT==== 5-Feb-2016::11:54:13 ===
accepting AMQP connection <0.7834.0> (xx.yy.224.33:37655 -> xx.yy.224.41:5672)
=ERROR REPORT==== 5-Feb-2016::11:54:13 ===
closing AMQP connection <0.7834.0> (xx.yy.224.33:37655 -> xx.yy.224.41:5672):
{bad_version,{1,1,0,10}}
rabbitmq 错误消息表明它正在拒绝来自 Qpid 客户端的建议 amqp 版本 1-0-10。
我捕获了尝试会话的 tcpdump 跟踪,我看到客户端(以上 .33)打开 TCP 连接,发送协议 ID 为 1-1,版本 0-10 的 amqp 消息,然后通过发送另一个协议 ID 为 0-0,版本 9-1 的 amqp 消息。但是,rabbitmq broker端(以上.41)在1-0-10消息后似乎放弃了,并在不处理0-9-1 amqp消息的情况下重置了TCP连接。
4 SYN-SENT xx.yy.224.33:35770 > xx.yy.224.41:amqp
4 SYN-RECEIVED xx.yy.224.33:35770 > xx.yy.224.41:amqp
4 ESTABLISHED xx.yy.224.33:35770 > xx.yy.224.41:amqp
AMQP... this one is {1,1,0,10}
AMQP.. . this one is {0,0,9,1}
4 RESET xx.yy.224.33:35770 > xx.yy.224.41:amqp
有什么想法可以让 rabbitmq 代理进行 {0,0,9,1} 版本协商吗?
【问题讨论】: