I need to implement a throttling mechanism (requests per second) when using HttpWebRequest for making parallel requests towards one application server. My C# app must issue no more than 80 requests per second to a remote server. The limit is imposed by the remote service admins not as a hard limit but as “SLA” between my platform and theirs.
How can I control the number of requests per second when using HttpWebRequest?
I had the same problem and couldn’t find a ready solution so I made one, and here it is. The idea is to use a
BlockingCollection<T>to add items that need processing and use Reactive Extensions to subscribe with a rate-limited processor.Throttle class is the renamed version of this rate limiter
Unit test: