在 Paho MQTT java 客户端上增加最大飞行时间有什么缺点吗?

Wim*_*Wim 4 java spring-integration mqtt paho

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

有谁知道为什么默认的 maxInflight 仅为 10,以及增加 maxInflight 是否有任何不利之处?

Art*_*lan 5

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

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

但后来作者在上面说:

尽管如此,将 max in-flight 设置为 65000 左右(或什至 32768,可能的 ID 空间的一半)将为排队发布 QoS 1/2 消息提供比默认限制 10 多得多的空间

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

为方便起见,我们可以公开maxInflight选项DefaultMqttPahoClientFactory。随意就此事提出JIRA