我正在使用 paho mqttv3 java 客户端通过创建线程在 2000 个连接左右同时发布消息。
一段时间后,它开始给出 MqttException 如下:
reason----- 32202
msg--------Too many publishes in progress
cause------ null
虽然我已经设置了 Qos 1。
任何人都知道为什么我会得到这样的例外?
提前致谢。
我刚刚遇到另一个问题,该问题的答案帮助我解决了这个问题。
在连接到代理之前,您必须使用对象中的setMaxInflight()
方法设置更高的 MaxInflight 值。MqttConnectOptions
默认值设置为 10。
原来的主题是:Send many publish message: Too many publishes in progress Error
这可能是服务器端或客户端的限制。
如果它是服务器限制,您应该查看有关如何调整它以处理更多客户端的特定文档。
如果是客户端限制,则不要MqttClient
尝试MqttAsyncClient
(非阻塞)Java 客户端。
您可以在此处开始查看三个不同的示例
使用阻塞直到操作完成的 API 的示例
SampleAsyncWait展示了如何将异步 API 与等待操作完成的等待程序一起使用
SampleAsyncCallBack展示了如何使用异步 API,其中事件用于在操作完成时通知应用程序