Throttling
Throttling idea
Throttling is the ability to impose upper limit on the number of messages submitted by client per time quantum. In some configurations, especially when using asynchronous submission mode, it is possible to go beyond the pace at which the SMSC can accept incoming messages. This usually leads to lost messages or erroneous submissions which requires additional logic to detect and recover.
Implementation
Since it may be cumbersome to control this on the application level it is often useful to be able to set certain limit
to the number of messages submitted by the component. This limit expressed in the number of messages submitted per second
can be set using
ThrottleRate
property of the component.
When the value is set to some positive number then the component calculates how many messages has been submitted over the
last second and if the number is about to go over the limit then it waits within the code of any of the submit function (SubmitMessage
, SubmitMessageEx
, SubmitMessageAsync
etc.) until some time passes so that the average number
of messages per time quantum is within the desired boundary.
To achieve result as presented on the chart above
ThrottleRate
property has to be set as:
clientSMPP.ThrottleRate = 100;
ThrottleRate
is set to 0 then there is no limit on the number of messages submitted over time.