使用“安全”是安全的。有MQTT主题级别分隔符而不是“/”?

时间:2016-06-27 15:05:09

标签: node.js rabbitmq amqp mqtt rabbitmq-exchange

有几个设备使用 MQTT 协议连接到RabbitMQ,有很多nodejs进程使用 AMPQ 协议订阅RabbitMQ以从这些设备获取数据。

设备的发布主题如下: data.DEVICETYPE.IDDEVICE ,例如,主题数据#订阅了一个nodejs进程,用于获取所有消息来自设备。

我关心的是分隔符,在这种情况下,是“。”;因为在所有示例和MQTT协议的文档中,它们总是使用“/”(就像路径文件夹)所以我开始认为使用点而不是斜杠可能是个问题。

值得一提的是,该系统确实运行良好,但我真的不知道将来这个决定是否可以解决兼容问题。

编辑:其实我的结构是这样的:RabbitMQ Topic structure 我从这开始创建该主题结构。

1 个答案:

答案 0 :(得分:0)

/是MQTT中的层次结构分隔符。如果您改为使用.,那么"可以使用",但您只需拥有大量不同的顶级主题。

您无法使用data.#使用通配符订阅 - 这是一个无效的订阅主题。 #必须是订阅的最后一个字符,并且必须在其自己的级别上。由于.不是层次结构分隔符,因此您违反了最后一条规则。