增加 Paho MQTT java 客户端上的最大飞行数量有什么缺点吗?

问题描述 投票:0回答:1

我正在使用 Spring Integration MQTT,它使用 Eclipse Paho 客户端将 MQTT 消息发送到 ActiveMQ Artemis 服务器。在我的应用程序上运行性能测试时,我收到“正在进行的发布过多”错误。我知道我可以通过将连接选项上的 maxInflight 属性设置为更高的数字(最大 65535)来解决此问题。

有谁知道为什么默认的 maxInflight 只有 10 以及增加 maxInflight 是否有任何缺点?

java spring-integration mqtt paho
1个回答
6
投票

我发现这篇文章有一些建议,例如:

不建议将 max in-flight 设置为 65535 – 应为这些服务数据包留出一些 ID 空间,以避免出现相同的“内部错误,由没有可用的新消息 ID 引起”异常。

但是上面作者说:

不过,将最大飞行中设置为 65000 左右(甚至 32768,可能的 ID 空间的一半)将为排队发布 QoS 1/2 消息提供比默认限制 10 更多的空间

“回退到 QoS 0”也是一个不错的选择。

为了方便起见,我们可以在

maxInflight
上公开
DefaultMqttPahoClientFactory
选项。随意就此事提出JIRA

© www.soinside.com 2019 - 2024. All rights reserved.