DimParf
DimParf

Reputation: 295

Android Paho client - How to enable offline buffering and send messages after network enabled?

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

Answers (1)

Rahul
Rahul

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

Related Questions