在 Paho MQTT java 客户端上增加 max in-flight 有什么缺点吗?
Is there any downside in increasing max in-flight on Paho MQTT java client?
我正在使用 Spring 集成 MQTT,它使用 Eclipse Paho 客户端将 MQTT 消息发送到 Artemis 服务器。当 运行 对我的应用程序进行性能测试时,我收到 'Too many publishes in progress' 错误。我知道我可以通过将连接选项上的 maxInflight 属性 设置为更高的数字(最大 65535)来解决此问题。
有谁知道为什么默认的 maxInflight 仅为 10 以及增加 maxInflight 是否有任何缺点?
我发现这个 article 有一些建议,例如:
setting max in-flight to 65535 is not recommended – some space for IDs should be left for those service packets to avoid same “Internal error, caused by no new message IDs being available” exception.
然后上面作者说:
Still, setting max in-flight to 65000 or so (or even 32768, half of possible IDs space) will give one much more space for queued to be published QoS 1/2 messages than default limit of 10
"fallback to QoS 0"也是不错的选择。
为了方便起见,我们可以在 DefaultMqttPahoClientFactory
上公开 maxInflight
选项。随意就此事提出 JIRA。
我正在使用 Spring 集成 MQTT,它使用 Eclipse Paho 客户端将 MQTT 消息发送到 Artemis 服务器。当 运行 对我的应用程序进行性能测试时,我收到 'Too many publishes in progress' 错误。我知道我可以通过将连接选项上的 maxInflight 属性 设置为更高的数字(最大 65535)来解决此问题。
有谁知道为什么默认的 maxInflight 仅为 10 以及增加 maxInflight 是否有任何缺点?
我发现这个 article 有一些建议,例如:
setting max in-flight to 65535 is not recommended – some space for IDs should be left for those service packets to avoid same “Internal error, caused by no new message IDs being available” exception.
然后上面作者说:
Still, setting max in-flight to 65000 or so (or even 32768, half of possible IDs space) will give one much more space for queued to be published QoS 1/2 messages than default limit of 10
"fallback to QoS 0"也是不错的选择。
为了方便起见,我们可以在 DefaultMqttPahoClientFactory
上公开 maxInflight
选项。随意就此事提出 JIRA。