我们可以通过 mqtt 桥将自定义消息属性发布设置为 pubsub
Posted
技术标签:
【中文标题】我们可以通过 mqtt 桥将自定义消息属性发布设置为 pubsub【英文标题】:Can we set custom message attribute publishing to pubsub over the mqtt bridge 【发布时间】:2021-02-09 16:37:20 【问题描述】:我正在使用 MQTT 向 Google IoT Core 发送和接收消息(遥测消息)。 然后将消息转发到不同的 Pub/Sub 主题。
我想在我的消息中添加自定义属性。 目标是在我的主题上使用不同的订阅。然后,通过我的自定义属性过滤传入的消息,最后通过我的数据流管道上的“主题”获取我的消息。 我知道当我们使用 Pub/Sub 客户端时我们可以做到这一点,但我无法从 mqtt 客户端做到这一点。 我正在使用python客户端。
因此,根据要求,我添加了一些细节。这是一个非常经典的情况。 我正在使用 MQTT 客户端,如此处的 google 示例:https://cloud.google.com/iot/docs/how-tos/mqtt-bridge#configuring_mqtt_clients。然后使用同一文档中的发布代码:https://cloud.google.com/iot/docs/how-tos/mqtt-bridge#publishing_telemetry_events(我刚刚替换了
for i in range(0, 60):
time.sleep(1)
client.loop()
time.sleep(1)
,因为我不想在每条消息之间等待一分钟。
我发布消息调用之前的代码如下:publisher.publish(topic, payload)
其中 topic 是我的 PubSub 主题,payload 是我的数据。
文档说:
转发的消息数据字段包含设备发布的消息的副本,并在Cloud Pub/Sub主题中的每条消息中添加以下消息属性
(如果您想查看属性,请链接:https://cloud.google.com/iot/docs/how-tos/mqtt-bridge#publishing_telemetry_events) 我想要做的是向这个列表添加自定义属性。 如果我直接调用 Pub/Sub 客户端,我可以这样做(来自文档):
# Add two attributes, origin and username, to the message
future = publisher.publish(
topic_path, data, origin="python-sample", username="gcp"
)
origin 和 username 是自定义属性,是否可以使用 MQTT 客户端执行此操作?
谢谢:)
【问题讨论】:
要获得任何帮助,您必须更加具体。什么有效?显示源代码。什么不起作用?显示源代码。 【参考方案1】:所以不可能。 谷歌的建议是使用主题子目录按主题“分组”消息。
您可以将主题关联到您的注册表,然后为您的主题设置子文件夹。只要遵循此约定,您就可以拥有任意数量的子目录:
主题:主题名称 子主题:topic_name/theme1,topic_name/theme2....
【讨论】:
以上是关于我们可以通过 mqtt 桥将自定义消息属性发布设置为 pubsub的主要内容,如果未能解决你的问题,请参考以下文章
使用stanza.io将自定义属性添加到不在服务器上的存档表中存储消息的消息
Kendo Upload Control,将自定义错误消息传回查看