如何解决带有JAVA的MQTT-使用QoS1发布某些数据时,我丢失了一些数据
我正在从事我的MQTT项目,并且是一个初学者。我想发布一些具有所有QoS级别的数据,并订阅它们并进行时间测量。我正在使用Raspberry pi作为订户,并且也在同一Raspberry pi中使用Mosquitto代理。我正在用自己的笔记本电脑发布数据。我期望当我使用Qos 0发布和订阅数据时,我会丢失一些数据,但是我的订户收到了所有数据。顺便说一句,我发布了1000万个随机值,带有8个并行线程,没有任何thread.sleep()
。这些是我的发布商代码的一部分:
final String temperature = tempratureNumber + "°C"; //temperatureNumber is random value.
byte[] payload = temperature.getBytes();
tempratureBadroomTopic.publish(payload,1,true);
//And these are my connect options:
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(false);
options.setWill(client.getTopic("home/LWT"),"I'm gone :(".getBytes(),false);
options.setMaxInflight(32768); // for too many publishes error.
client.connect(options);
这些也是我的订户代码的一部分:
final String topic1 = "home/brightness1/bathroom";
mqttClient.subscribe(topic1,1);
我还期望当我发布带有QoS1的200k随机值时,将花费更多的时间,但是由于QoS级别,我将收到至少200k随机值可能大于200k。但是,有时我收到不到200k的值,例如199780。我不明白为什么丢失数据。 我遇到这些情况的原因可能是什么? 祝你有美好的一天。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。