在Paho MQTT java客户端上增加最大飞行量是否有任何不利因素?

时间:2018-02-02 11:27:06

标签: java spring-integration mqtt paho

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

有没有人知道为什么默认的maxInflight只有10,并且增加maxInflight是否有任何缺点?

1 个答案:

答案 0 :(得分:4)

我发现这个article有一些建议,例如:

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

但是,然后作者说:

  

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

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

为方便起见,我们可以在maxInflight上公开DefaultMqttPahoClientFactory选项。在此问题上可以免费提出JIRA