2016-09-26 38 views
0

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

换句话说,有没有进行用户感知出版,减少客户发布到代理网络流量的标准方式?

这对于我们有许多传感器能够产生大量数据的应用非常重要,但是大多数时候,没有人会对所有这些数据感兴趣,但是只有一小部分,我们想要节省电池或避免网络拥塞。

回答

2

在即将到来的MQTT V5规范经纪人可以指示到客户端,有一个主题没有订户当客户端发布到该主题。这仅适用于QoS 1或QoS 2发布,因为QoS 0消息不会导致回复。

+1

这有什么用?在发布的尖端,可能没有订阅者,但有人可能会在下次发布之前订阅 – hardillb

+0

。无可否认,它并没有真正帮助这种情况。它确实有助于减少QoS 2流量的流量,因为您不需要完成它。 – ralight

+0

为什么没有MQTT * v4 *? –

1

不,出版商完全不知道有多少订阅者,有可能是零或数千。

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

1

想必你可以设计你的设备和应用程序,从而使设备以及发布数据的“数据主题”,它也赞同另一特定于设备的“命令主题”控制设备数据发布。如果应用程序对来自特定设备的数据感兴趣,则它必须知道哪个设备要知道要订阅哪个数据主题,因此它可以将“请立即发布数据”命令发布到相应的命令主题。

我想有可能是一个地方,在中间解决方案,设备数据发布频率较低时,没有应用程序有兴趣,更快,当至少一个应用是要求数据公布。

在我看来,一件事MQTT是,你应该理想地设计设备和应用作为一个系统,而不是隔离。