我想尝试使用以下项目的Azure Functions:
我的问题是REST API具有速率限制。因此,如果我的function1在queue1中放入100个项目并且function2被并行调用100次,那么我的API调用将被阻止。因此,我需要某种限制。
你将如何实现这一目标?我可以告诉function2等待一个特定的时间,然后将项目添加回queue1,但由于一切都是并行的,我可能会遇到死锁?
提前感谢您的想法!
答案 0 :(得分:2)
被称为100次并行
您可以通过配置host.json
:
batchSize
maxConcurrentCalls
用于服务总线
如果这还不够,你可以做一些更加软化的事情:
功能1知道它必须处理多少项,因此它可以计算出理想的"在接下来的30分钟内分发那些
将消息添加到queue1时,可以设置应该接收消息的时间(服务总线为ScheduledEnqueueTimeUtc
或initialVisibilityDelay
为CloudQueue
)
将按照计划"调用功能2"如果消息总量不是太高,这应该可以防止限制
答案 1 :(得分:1)
我建议您查看Azure Durable Functions here。持久功能框架允许您协调复杂的工作流程并管理状态。在您的示例中,您可以使用持久性函数来解决速率限制问题