And*_*rei 5 c# throttling azure azureservicebus azure-functions
我有一个由队列消息触发的Azure函数。该函数向第三方API发出请求。不幸的是,此API有限制-每秒10个事务,但是我可能每秒在服务总线队列中有10条以上的消息。如何限制Azure函数的调用次数以满足第三方API的限制?
不幸的是,没有内置选项。
限制并发执行的唯一可靠方法是在固定的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所建议的那样,请在此答案中查看其他一些想法。它与存储队列有关,但也适用于服务总线。