使用通配符订阅 MQTT 主题
Subscribing MQTT topics with wildcards
我有一个 MQTT 客户端想要订阅以下主题
- node1/data/updates
- node1/data/delta
- node1/data
当然我有多个节点,所以我必须使用通配符,如下所述:https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/
我尝试了以下主题名称
- +/数据/+
- +/数据/#
- +/data#(我很绝望)
使用上述表达式 1 和 2 我没有收到主题 node1/data 的消息。
有没有办法通过单个订阅来做到这一点?
假设我阅读 spec 正确,选项 2 应该有效。
For example, if a Client subscribes to “sport/tennis/player1/#”, it
would receive messages published using these topic names:
- “sport/tennis/player1”
- “sport/tennis/player1/ranking”
- “sport/tennis/player1/score/wimbledon”
选项 3 肯定无效。
您是否尝试过使用 mosquitto 进行测试,看看这是否是特定于 hivemq 的?
编辑:
我已经通过 mosquito
使用 mosquitto_pub
和 mosquitto_sub
对 publish/subscribe 消息进行了测试,并且根据规范使用选项 2 它可以正常工作。
我有一个 MQTT 客户端想要订阅以下主题
- node1/data/updates
- node1/data/delta
- node1/data
当然我有多个节点,所以我必须使用通配符,如下所述:https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/
我尝试了以下主题名称
- +/数据/+
- +/数据/#
- +/data#(我很绝望)
使用上述表达式 1 和 2 我没有收到主题 node1/data 的消息。
有没有办法通过单个订阅来做到这一点?
假设我阅读 spec 正确,选项 2 应该有效。
For example, if a Client subscribes to “sport/tennis/player1/#”, it would receive messages published using these topic names:
- “sport/tennis/player1”
- “sport/tennis/player1/ranking”
- “sport/tennis/player1/score/wimbledon”
选项 3 肯定无效。
您是否尝试过使用 mosquitto 进行测试,看看这是否是特定于 hivemq 的?
编辑:
我已经通过 mosquito
使用 mosquitto_pub
和 mosquitto_sub
对 publish/subscribe 消息进行了测试,并且根据规范使用选项 2 它可以正常工作。