qpid proton API是否可与Qpid C++ broker正常兼容使用?
问题原因确认
你的推测完全正确:Qpid Proton库原生仅支持AMQP 1.0标准协议,默认启动的Qpid C++ Broker(qpidd)默认启用的是旧版AMQP 0-9/0-10协议,二者协议版本不匹配是帧错误的根本原因。你报错信息里的AMQP\x01\x01\x00\x0a就是旧版协议的标识头,和Proton要求的AMQP 1.0协议头不兼容。
解决方案
第一步:正确配置qpidd启用AMQP 1.0协议
你之前传入--protocols参数报错是因为参数格式不符合要求,qpidd的协议参数不需要空格,版本号需写为1.0而非10,正确启动命令如下:
- 仅启用AMQP 1.0协议(适配Proton客户端):
qpidd -p 8080 --protocols amqp1.0 - 同时兼容旧版AMQP 0-10和AMQP 1.0协议:
qpidd -p 8080 --protocols amqp0-10,amqp1.0
第二步:可选适配SASL配置
如果你客户端代码中已经关闭了SASL,启动qpidd时可以追加--auth no参数关闭服务端身份校验,避免后续连接报错:qpidd -p 8080 --protocols amqp1.0 --auth no
异常情况处理
如果按上述配置启动依然报错,大概率是你安装的qpidd版本过低未编译AMQP 1.0支持,升级到qpidd 0.34及以上版本即可,主流发行版的官方源提供的预编译包均已默认开启AMQP 1.0支持。
内容的提问来源于stack exchange,提问作者Lorah Attkins
相关产品推荐
相关产品推荐

