节流以限制吞吐量

throttling to limit throughput

所以现在我正在想办法解决这个问题。 我需要调用外部资源 (API) 并将对象集合传递给它。

那么假设,我有一个这样的发件人:

public class Sender{

    /// Send an message to an external api
    public async Task Send(object[] objectCollection){
    
    }
}

问题是,API 端存在吞吐量限制。例如(每秒 5 个对象)。所以我需要在我这边实现某种等待机制(节流器),它将与单个应用程序内的并发方法调用一起工作。

  1. 是否已经有 .NET 节流器,还是我必须自己实现它?
  2. 您将如何实施每秒 5 个对象的规则?

我的想法是简单地使用信号量,但这只会限制并发性而不会考虑时间限制。

感谢您的建议。

所以最后,我用了window sliding technique