使用通配符订阅 MQTT 主题

Subscribing MQTT topics with wildcards

我有一个 MQTT 客户端想要订阅以下主题

  1. node1/data/updates
  2. node1/data/delta
  3. node1/data

当然我有多个节点,所以我必须使用通配符,如下所述:https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/

我尝试了以下主题名称

  1. +/数据/+
  2. +/数据/#
  3. +/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_pubmosquitto_sub 对 publish/subscribe 消息进行了测试,并且根据规范使用选项 2 它可以正常工作。