首页 > 解决方案 > 使用 AMQP/qpid-proton 将 python dict 发布到 Solace 时出错

问题描述

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

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

得到以下错误

拒绝消息:1 远程处置:Condition('amqp:not-implemented', 'unsupported AMQP value type: TOK_MAP_START')

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

solace 是否仅支持 AMQP 上的字符串?

标签: solace

解决方案


Solace 消息代理支持 amqp-value 消息部分,其中包含 null、string、binary、symbol 或 uuid 类型的值。(https://docs.solace.com/Open-APIs-Protocols/AMQP/AMQP-Protocol-Conformance.htm#Sec3-2-8

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

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

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


推荐阅读