当 MQTT 中的主题没有任何订阅者时会发生什么?

物联网 MQTT
2021-06-14 23:35:11

情况如下:

有一个客户端,一个发布者,它不订阅任何主题。这个客户端有一个自己的主题,并定期向它发布数据。但是没有订阅此主题的任何其他客户端

所以这个可怜而孤独的客户可能会被认为是不正常的(第 5.4.8 章)。

服务器实现可能会监视客户端行为以检测潜在的安全事件。例如:

  • [...]

  • 发送无法传递的消息(主题没有订阅者)

不知道有多少客户订阅了它的主题。所以它不知道它可能被认为是一个行为异常的客户端。

那么这样的客户端会发生什么取决于服务器的实现呢?有什么做法,应该是简单的断开连接,然后它不会尝试重新连接吗?

1个回答

正如您所说,这取决于服务器的实现,尤其是传输消息的 QoS,如果它是“至少一次”。

恕我直言,MQTT 是一个广播系统,而不是两台机器之间的端到端协议,因此我们每次创建主题时都不需要订阅者。

我可以发布任何东西(温度,...),两个月后实现一些可以读取它的东西,或者甚至删除它并在我的传感器仍然发布数据的同时考虑其他东西。