我正在研究 Apache Qpid 中的 C++ AMQP 实现。
我已经安装了C++ 代理,我可以通过以下方式简单地启动它:
qpidd -p 8080
创建客户端代码的明显库选择是具有一些示例的质子 API。运行以下命令时:
./simple_send -a 127.0.0.1:8080
我得到:
amqp:connection:framing-error: Expected SASL protocol header got: Pre standard AMQP connection ['AMQP\x01\x01\x00\x0a']
当我修改示例以从连接选项中删除 SASL 时,
proton::connection_options co;
co.sasl_enabled(false);
错误变为:
amqp:connection:framing-error: Expected AMQP protocol header got: Unknown protocol ['AMQP\x01\x01\x00\x0a']
据我了解,质子 API 需要 AMQP 协议的“版本 10”,并且(如错误所示)返回“1.1”。是这样吗?我可以克服这个错误吗?
qpidd
有一个选项--protocols
,但我不知道如何指定版本 10(传递“AMQP 10”之类的字符串会导致“错误未指定协议”)。质子示例中包含的代理示例确实可以使用,simple_send
但我的目的不是重写代理,而是使用工业实力的代理,例如Qpid C++ broker
.