假设消息的速率恒定,如果订阅客户端无法比消息到达的速度更快地处理它们,那么在订阅客户端或代理中对它们进行排队并没有什么帮助。这只会导致内存泄漏,最终会消耗所有可用内存并使应用程序崩溃,甚至可能丢失消息。
MQTT 通常不支持在线客户端的消息排队。对于以大于 QOS 0 订阅的客户端,可以通过控制客户端在 QOS 握手过程中向代理确认消息的方式来对代理中的消息进行排队,但正如我所说,这只会导致他们支持在代理中,直到内存耗尽。能否执行此操作还取决于您使用的客户端库。
正确的解决方案可能是拥有多个处理客户端并使用称为共享订阅的东西来确保每条消息仅传递到单个处理器。共享订阅是 v5 版本中添加到 MQTT 规范的一项功能。有关共享订阅的更多信息可以在此处找到
| 归档时间: |
|
| 查看次数: |
10751 次 |
| 最近记录: |