使用AMQP / qpid-proton将python dict发布到Solace时出错

时间:2018-11-21 16:42:10

标签: solace

尝试从solace-samples-amqp-qpid-proton-python运行带有python dict负载的producer.py

Message(id=(self.sent+1), body={'sequence':(self.sent+1)})

出现以下错误

  

拒绝消息:1远程处置:   Condition('amqp:not-implemented','不支持的AMQP值类型:   TOK_MAP_START')

尝试在正文中发送整数值时出现类似错误-TOK_TYPE_INT

安慰是否仅通过AMQP支持字符串?

1 个答案:

答案 0 :(得分:0)

Solace消息代理支持amqp值消息部分,其中包含类型为null,字符串,二进制,符号或uuid的值。 (https://docs.solace.com/Open-APIs-Protocols/AMQP/AMQP-Protocol-Conformance.htm#Sec3-2-8

这样做是为了保持最大的消息互操作性。

任何使用特定于语言的语义的已发布消息都只能使用相同的语义来使用。即如果使用Python dict进行发布,则只能使用Python dict进行解码,因此,如果使用的是MQTT或REST使用者,则它将无法解码消息。

最好的选择是使用跨语言序列化库,这将使以后的扩展更加容易。例如,您将来可能会决定添加一个REST使用者,它可以使用跨语言序列化库对数据进行解码。