control publish rate of generated persistent messages [message #1838023] |
Sat, 13 February 2021 15:04 |
Fast cieff Messages: 3 Registered: January 2021 |
Junior Member |
|
|
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?
[Updated on: Sat, 13 February 2021 15:05] Report message to a moderator
|
|
|
Re: control publish rate of generated persistent messages [message #1838912 is a reply to message #1838023] |
Tue, 09 March 2021 07:43 |
Eclipse User |
|
|
|
Hello,
I was looking for the exact same behaviour/function and checked a variety of places including paho-mqtt PyPi documentation, the paho documentation here at Eclipse, Stackexchange (*overflow etc.) and the paho-mqtt Google group without finding a solution.
With regards to your question I have checked the "max_inflight_messages" out of despair, but from what I could read and test it is for incoming messages (subscribe) only.
What I am after is something like "max_outbound_messages" being able to control the publish of messages in the queue. My situation is similar to yours, as during an update of the broker our devices are queuing up messages in the meantime and publish all as a bulk/batch after reconnection. So on broker side there is a rate limiter implemented, reducing the incoming messages of a single topic to 500 per 10 seconds. Depending on the downtime of the broker, this happens from time to time.
Has anyone a solution for this issue?
Do you think it is worth noting this as a feature request to the paho devs?
Thanks in advance and best regards,
Stefan Balluff
|
|
|
Re: control publish rate of generated persistent messages [message #1839026 is a reply to message #1838912] |
Thu, 11 March 2021 13:56 |
Frank Pagliughi Messages: 1 Registered: March 2021 |
Junior Member |
|
|
Hello. I answered this question on the paho-dev mailing list several days ago (or a remarkably similar one from someone else!). Here's what I wrote, and though now it appears that you're using the Python library, the answer is basically the same:
Quote:
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.
- Frank
|
|
|
|
Powered by
FUDForum. Page generated in 0.02698 seconds