如何解决使用 Paho MQTT 订阅消息时如何读取标头键:值对
我在使用 pika like 向我的 rabbitmq 代理发布消息时添加了一个标头键:值对
channel.basic_publish(exchange=self.exchange,routing_key=self.routing_key,properties=pika.BasicProperties(
headers={'key': 'value'}
),body=message)
在我的客户端,我使用 websockets 订阅 Paho MQTT 的主题。如何使用 Paho MQTT 检索相同的消息标头。我尝试了以下对我不起作用的方法
def onMessage(client,userdata,message):
print("topic: " + message.topic + ",message: " + str(message.payload,'utf-8'))
print(client.headers)
print(userdata.headers)
print(message.headers)
更新
我发现该消息具有“属性”属性。但是当我尝试 print(message.properties)
时,它给了 AttributeError: properties
解决方法
Pika 是一个 AMQP 客户端,以 AMQP 格式发布消息。
Paho 是一个 MQTT 客户端,因此只能处理该格式的消息。在 MQTT v3(Paho Python 客户端尚不支持 MQTT v5)中,该协议没有任何范围来保存消息属性。 MQTT v3 消息的唯一属性是 topic
、payload
、QOS
和 retained
位。
因此,在将消息从队列移动到 MQTT 主题之前,RabbitMQ 代理必须进行格式转换并剥离属性。
所以基本上我是说 MQTT 消息中没有要读取的属性。
编辑: 看起来最新版本的 Paho Python 客户端确实支持 MQTTv5(该文档尚未更新)。虽然 MQTTv5v 确实支持标头中的键/值对属性,但这将取决于使用 MQTTv5 和 RabbitMQ 实际连接的客户端是否支持 MQTTv5 并将值复制到新格式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。