Azure功能:限制每秒呼叫次数

And*_*rei 5 c# throttling azure azureservicebus azure-functions

我有一个由队列消息触发的Azure函数。该函数向第三方API发出请求。不幸的是,此API有限制-每秒10个事务,但是我可能每秒在服务总线队列中有10条以上的消息。如何限制Azure函数的调用次数以满足第三方API的限制?

Mik*_*kov 5

不幸的是,没有内置选项。

限制并发执行的唯一可靠方法是在固定的App Service计划(而不是消费计划)上运行,并且始终仅运行一个实例。您必须为此实例付费。

然后在host.json文件中设置选项:

"serviceBus": {
    // The maximum number of concurrent calls to the callback the message
    // pump should initiate. The default is 16.
    "maxConcurrentCalls": 10
}
Run Code Online (Sandbox Code Playgroud)

最后,请确保您的函数需要花费一秒钟的时间执行(或其他最短的持续时间,并相应地调整并发调用)。

正如@SeanFeldman所建议的那样,请在此答案中查看其他一些想法。它与存储队列有关,但也适用于服务总线。