Reputation: 295
I am use Android Paho client library v1.1.0, QoS 2. My code for pub/sub over 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);
And offline buffering options:
@Override
public void onSuccess(IMqttToken iMqttToken) {
this.disconnectedBufferOptions = new DisconnectedBufferOptions();
this.disconnectedBufferOptions.setBufferEnabled(true);
mClient.setBufferOpts(disconnectedBufferOptions);
subscribe(topic);
}
Messages published to topic if the network is available, but if it disabled and enabled again offline messages not sending. How to correctly enable offline buffering option and send offline messages? Additional info: mClient.getBufferedMessageCount() after network disabled and publish message = 0
Upvotes: 2
Views: 1338
Reputation: 562
using conOpt.setAutomaticReconnect(true) along with the following code snippet in onSuccess of connect token solved it for me.
DisconnectedBufferOptions disconnectedBufferOptions = new DisconnectedBufferOptions();
disconnectedBufferOptions.setBufferEnabled(true);
disconnectedBufferOptions.setBufferSize(100);
disconnectedBufferOptions.setPersistBuffer(false);
disconnectedBufferOptions.setDeleteOldestMessages(false);
mClient.setBufferOpts(disconnectedBufferOptions);
Upvotes: 2