User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0
Of course, the other option might be fork the Paho library,
implement the behavior you want in the library, and then send a PR
back to GitHub. It could be useful to others.
Frank
On 3/12/21 12:01 PM, Frank Pagliughi
wrote:
Persist your application queue?
Create a file when the connection is lost, then append messages to
the end of the file. Be sure to flush each time you add data. That
should be easy enough. Depending on your system you could also use
a little cache or DB, like Redis (with persistence enabled) or
SQLite.
Frank
On 3/12/21 11:28 AM, fast cieff
wrote:
Hi Frank,
Thanks for your reply. Yes, I am using C lib.
I want to address below case with persistence mode
enabled.
Consider connectivity is lost for an hour and say 100
messages are generated. If I store in the application queue
and if power is turned off for some reason, I will loose
these messages.
So, to overcome this, I have enabled persistence mode so
that these messages will be stored in files and when power
is turned on and connectivity is established, these messages
can be published.
Could you suggest the possible way to address above
usecase?
You don't mention which of the man Paho libraries that
you're using, but it sounds like the C lib?
Either way, I don't believe that any of the libraries will
do this for you directly how you want. But just about all
of them give you the ability to write this yourself pretty
easily.
The thing about most MQTT client libraries is that they
are very connection aware. You are normally alerted when
the connection with the broker is lost, and if set for
automatic reconnects, you can be alerted again when the
connection is re-established.
So, when the connection is lost, rather than trying to
publish messages, just put them into a local, application
queue. Then, when the connection is re-established, send
them at the rate that you desire.
I want to control the number of messages sent
per second when the persistence type is set to
MQTTCLIENT_PERSISTENCE_DEFAULT.
So, for example consider thatĀ the internet
is disconnected/down for 1 hour and in this 1
hour 100 messages are generated. When the
connectivity is back then I see that all 100
messages are sent in burst.
I want to limit this to say 10 messages per
second? Is there a way to achieve this? Will
setting "maxInflight" help solve theĀ problem?