我正在使用 Spring Integration MQTT,它使用 Eclipse Paho 客户端将 MQTT 消息发送到 ActiveMQ Artemis 服务器。在我的应用程序上运行性能测试时,我收到“正在进行的发布过多”错误。我知道我可以通过将连接选项上的 maxInflight 属性设置为更高的数字(最大 65535)来解决此问题。
有谁知道为什么默认的 maxInflight 只有 10 以及增加 maxInflight 是否有任何缺点?
我发现这篇文章有一些建议,例如:
不建议将 max in-flight 设置为 65535 – 应为这些服务数据包留出一些 ID 空间,以避免出现相同的“内部错误,由没有可用的新消息 ID 引起”异常。
但是上面作者说:
不过,将最大飞行中设置为 65000 左右(甚至 32768,可能的 ID 空间的一半)将为排队发布 QoS 1/2 消息提供比默认限制 10 更多的空间
“回退到 QoS 0”也是一个不错的选择。
为了方便起见,我们可以在
maxInflight
DefaultMqttPahoClientFactory