在没有订户时减少MQTT流量

在没有订户时减少MQTT流量,mqtt,Mqtt,在MQTT协议的上下文中,是否有一种方法可以使客户机在没有该主题的订阅者时不发送发布消息 换句话说,是否有标准的方法来执行订户感知发布,从而减少从发布客户端到代理的网络流量 这在我们有许多传感器能够产生大量数据的应用中非常重要,但大多数情况下,除了一小部分数据外,没有人会对所有这些数据感兴趣,我们希望节省电池或避免网络拥塞。不,发布者完全不知道给定主题的订阅者有多少,可能有零个或数千个 这是发布/订阅消息的一个关键点,即信息生产者和消费者几乎完全分离。不,发布者完全不知道给定主题的订阅者有多少,

在MQTT协议的上下文中,是否有一种方法可以使客户机在没有该主题的订阅者时不发送发布消息

换句话说,是否有标准的方法来执行订户感知发布,从而减少从发布客户端到代理的网络流量


这在我们有许多传感器能够产生大量数据的应用中非常重要,但大多数情况下,除了一小部分数据外,没有人会对所有这些数据感兴趣,我们希望节省电池或避免网络拥塞。

不,发布者完全不知道给定主题的订阅者有多少,可能有零个或数千个


这是发布/订阅消息的一个关键点,即信息生产者和消费者几乎完全分离。

不,发布者完全不知道给定主题的订阅者有多少,可能有零个或数千个


这是发布/订阅消息传递的一个关键点,即信息生产者和消费者几乎完全分离。

在即将发布的MQTT v5规范中,代理可以向客户机指示,当客户机发布到某个主题时,该主题没有订户。这仅适用于QoS 1或QoS 2发布,因为QoS 0消息不会导致回复。

在即将发布的MQTT v5规范中,代理可以向客户端指示,当客户端发布到某个主题时,该主题没有订户。这仅适用于QoS 1或QoS 2发布,因为QoS 0消息不会产生回复。

您可能可以设计设备和应用程序,以便设备在将数据发布到“数据主题”的同时,还订阅另一个控制设备数据发布的特定于设备的“命令主题”。如果应用程序对来自特定设备的数据感兴趣,它必须知道哪个设备要知道订阅哪个数据主题,这样它就可以将“请立即发布数据”命令发布到相应的命令主题

我想可能有一种介于两者之间的解决方案,当没有应用程序感兴趣时,设备发布数据的频率较低,而当至少有一个应用程序要求发布数据时,设备发布数据的速度更快


在我看来,MQTT的一点是,理想情况下,您应该将设备和应用程序设计为一个系统,而不是孤立地进行设计。

大概您可以设计设备和应用程序,以便将设备以及数据发布到“数据主题”,它还订阅控制设备数据发布的另一个特定于设备的“命令主题”。如果应用程序对来自特定设备的数据感兴趣,它必须知道哪个设备要知道订阅哪个数据主题,这样它就可以将“请立即发布数据”命令发布到相应的命令主题

我想可能有一种介于两者之间的解决方案,当没有应用程序感兴趣时,设备发布数据的频率较低,而当至少有一个应用程序要求发布数据时,设备发布数据的速度更快


在我看来,MQTT的一点是,您应该将设备和应用程序理想地设计为一个系统,而不是孤立地设计。

这有什么帮助?在发布的时候可能没有订阅者,但是有人可能会在下一次发布之前订阅者。不可否认,这对这种情况并没有真正的帮助。它确实有助于减少QoS 2流的流量,因为您不需要完成它。为什么没有MQTT v4?因为MQTT v3.1.1使用了协议版本号4。V5使它们恢复同步。这有什么帮助?在发布的时候可能没有订阅者,但是有人可能会在下一次发布之前订阅者。不可否认,这对这种情况并没有真正的帮助。它确实有助于减少QoS 2流的流量,因为您不需要完成它。为什么没有MQTT v4?因为MQTT v3.1.1使用了协议版本号4。V5使它们恢复同步。