MQTT 订阅 100k 保留消息

MQTT subscribing to 100k retain messages

我们有超过 10 万条关于此主题的保留消息 'devices/access_control/inout_status/by_project/#'。订阅后,我们收到大约 8k-10k 条消息,然后它因错误 'Broken pipe' 而断开连接,重新连接后,我们再次收到相同的 10k 条消息。我该如何解决这个问题?

消息传递按预期进行,当您订阅给定主题时,您将始终获得该主题的最后保留消息。

您正在订阅一个通配符主题,如果您在主题树的该分支下有 +10k 个子主题,那么当您重新连接时,这些消息将始终被传递。

至于为什么它会因 Broken pipe 错误而断开连接,这可能是因为您无法足够快地处理那么多消息,并且使接收器泛滥到甚至无法驱动的程度低级 TCP 堆栈。