首页 > 解决方案 > 订阅者的数量是否会影响 MQTT 中的接收时间?

问题描述

我想知道特定主题的订阅者数量是否会导致每个订阅者接收消息的延迟?
如果是,是与代理的实现有关还是与 MQTT 的性质有关?

我在各种经纪人的文档中找不到任何东西,或者我找不到合适的词来搜索。

scenario 1 :
topic1
publisher --> broker --> 1 subscriber

scenario 2 :
topic1
publisher --> broker --> 2 or more subscribers

场景 1 中的订阅者接收消息会比场景 2 更快吗?
还是每个订阅者同时收到消息?

标签: amazon-web-servicesmqttaws-iotmessagebroker

解决方案


这主要取决于经纪人是如何实施的,但其他因素也会产生影响。

对于大多数代理来说,传递特定消息的处理可能是单线程的,并遵循以下步骤:

  • Broker 从发布客户端接收发布数据包
  • 在接收消息的线程上,它开始搜索已连接客户端的订阅主题模式列表
  • 找到匹配项后,它将向该客户端发送发布数据包并继续下一个。

使用精心设计的订阅主题树结构,搜索时间不应该根据订阅客户端的数量而改变,而只是匹配模式的数量(重叠通配符)。但是发送到匹配的客户端将是线性的。

另一个因素是消息的大小和每个客户端的网络速度。

您可能可以在单个代理中并行化其中的一些,但这仍然会在网络接口或分布式代理上出现瓶颈(但这会增加将原始消息推送到其他节点的开销)


推荐阅读