有几个设备使用 MQTT 协议连接到RabbitMQ,有很多nodejs进程使用 AMPQ 协议订阅RabbitMQ以从这些设备获取数据。
设备的发布主题如下: data.DEVICETYPE.IDDEVICE ,例如,主题数据#订阅了一个nodejs进程,用于获取所有消息来自设备。
我关心的是分隔符,在这种情况下,是“。”;因为在所有示例和MQTT协议的文档中,它们总是使用“/”(就像路径文件夹)所以我开始认为使用点而不是斜杠可能是个问题。
值得一提的是,该系统确实运行良好,但我真的不知道将来这个决定是否可以解决兼容问题。
编辑:其实我的结构是这样的:RabbitMQ Topic structure 我从这开始创建该主题结构。答案 0 :(得分:0)
/
是MQTT中的层次结构分隔符。如果您改为使用.
,那么"可以使用",但您只需拥有大量不同的顶级主题。
您无法使用data.#
使用通配符订阅 - 这是一个无效的订阅主题。 #
必须是订阅的最后一个字符,并且必须在其自己的级别上。由于.
不是层次结构分隔符,因此您违反了最后一条规则。