我们可以通过 mqtt 桥将自定义消息属性发布设置为 pubsub
Can we set custom message attribute publishing to pubsub over the mqtt bridge
我正在使用 MQTT 发送和接收消息 from/to Google IoT Core(遥测消息)。
然后将消息转发到不同的 Pub/Sub 主题。
我想在我的消息中添加自定义属性。
目标是对我的主题使用不同的订阅。然后,通过我的自定义属性过滤传入的消息,最后通过 'theme' 在我的数据流管道上获取我的消息。
我知道我们可以在使用 Pub/Sub 客户端时做到这一点,但我无法从 mqtt 客户端做到这一点。
我正在使用 python 客户端。
因此,根据要求,我添加了一些细节。这是一个非常经典的情况。
我在这里使用 google 示例中的 MQTT 客户端:https://cloud.google.com/iot/docs/how-tos/mqtt-bridge#configuring_mqtt_clients. Then using the publish code from the same documentation: 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 是我的数据。
文档说:
The forwarded message data field contains a copy of the message published by the device, and the following message attributes are added to each message in the Cloud Pub/Sub topic
(link如果要看属性: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 客户端执行此操作?
谢谢:)
所以不可能。
google 建议按主题使用主题 sub-directories 到 'group' 消息。
您可以将主题关联到您的注册表,然后为您的主题设置子文件夹。只要遵循以下约定,您就可以拥有任意多的子目录:
主题:topic-name
副主题:topic_name/theme1, topic_name/theme2.....
我正在使用 MQTT 发送和接收消息 from/to Google IoT Core(遥测消息)。 然后将消息转发到不同的 Pub/Sub 主题。
我想在我的消息中添加自定义属性。
目标是对我的主题使用不同的订阅。然后,通过我的自定义属性过滤传入的消息,最后通过 'theme' 在我的数据流管道上获取我的消息。
我知道我们可以在使用 Pub/Sub 客户端时做到这一点,但我无法从 mqtt 客户端做到这一点。
我正在使用 python 客户端。
因此,根据要求,我添加了一些细节。这是一个非常经典的情况。 我在这里使用 google 示例中的 MQTT 客户端:https://cloud.google.com/iot/docs/how-tos/mqtt-bridge#configuring_mqtt_clients. Then using the publish code from the same documentation: 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 是我的数据。
文档说:
The forwarded message data field contains a copy of the message published by the device, and the following message attributes are added to each message in the Cloud Pub/Sub topic
(link如果要看属性: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 客户端执行此操作?
谢谢:)
所以不可能。 google 建议按主题使用主题 sub-directories 到 'group' 消息。
您可以将主题关联到您的注册表,然后为您的主题设置子文件夹。只要遵循以下约定,您就可以拥有任意多的子目录:
主题:topic-name
副主题:topic_name/theme1, topic_name/theme2.....