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.

Throttling diagram


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;
When ThrottleRate is set to 0 then there is no limit on the number of messages submitted over time.

See Also

Usage Overview, Asynchronous Mode