Hi, when publishing a message using the
synchronous MqttClient api and if an exception is thrown while
publishing, is it possible to figure out if the message flow
will be resumed when the client is reconnected to broker based
on the thrown exception ?
The question may sound a little strange, but I have a hard
time figuring out if an exception occurs, should the message
be republished again using the MqttClient.publish method or
the mqtt library will take care republishing it ?
I have looked at the code of the library for exceptions
with reason codes that will lead to the message being removed
from the mqtt token store and not being resend again after
reconnect. Here is what I found so far:
REASON_CODE_CLIENT_NOT_CONNECTED
-
mqtt
will not resume delivery on reconnect
REASON_CODE_TOKEN_INUSE
- mqtt
will not resume delivery on reconnect
MqttPersistenceException
while trying to persist the message -
mqtt
will not resume delivery on reconnect
REASON_CODE_CLIENT_DISCONNECTING
- mqtt
will not resume delivery on reconnect
REASON_CODE_CLIENT_TIMEOUT
- message flow will be resumed when we reconnect
I know that
there is a callback for delivery complete but if I depend
only on that, how can I be sure if its going to be called
when client reconnects after exception is thrown while
trying to publishing a message ?