我使用 Android Paho 客户端库 v1.1.0,QoS 2。 我通过 MQTT 发布/订阅的代码:
mClient = new MqttAndroidClient(this, uri, clientId, new MqttDefaultFilePersistence());
MqttConnectOptions conOpt = new MqttConnectOptions();
conOpt.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1);
conOpt.setCleanSession(true);
conOpt.setAutomaticReconnect(true);
mClient.setTraceEnabled(true);
mClient.setCallback(this);
mClient.setTraceCallback(this);
IMqttToken connectToken = mClient.connect(conOpt, null, this);
和离线缓冲选项:
@Override
public void onSuccess(IMqttToken iMqttToken) {
this.disconnectedBufferOptions = new DisconnectedBufferOptions();
this.disconnectedBufferOptions.setBufferEnabled(true);
mClient.setBufferOpts(disconnectedBufferOptions);
subscribe(topic);
}
如果网络可用,则消息发布到主题,但如果禁用并再次启用离线消息,则不会发送。 如何正确启用离线缓冲选项并发送离线消息? 附加信息:网络禁用并发布消息后 mClient.getBufferedMessageCount() = 0
最佳答案
使用 conOpt.setAutomaticReconnect(true) 以及连接 token onSuccess 中的以下代码 fragment 为我解决了这个问题。
DisconnectedBufferOptions disconnectedBufferOptions = new DisconnectedBufferOptions();
disconnectedBufferOptions.setBufferEnabled(true);
disconnectedBufferOptions.setBufferSize(100);
disconnectedBufferOptions.setPersistBuffer(false);
disconnectedBufferOptions.setDeleteOldestMessages(false);
mClient.setBufferOpts(disconnectedBufferOptions);
关于java - Android Paho 客户端 - 如何启用离线缓冲并在网络启用后发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39781794/