使用外部REST API的Azure功能应用程序的体系结构



我想通过以下项目尝试Azure功能:

  • 由时间(每30分钟一次)触发,我的初始功能1将一些数据放在队列中。
  • 此队列触发另一个调用外部REST API的函数2,修改响应并将结果放入另一个队列中。
  • 此Queue3启动另一个函数3做其余的。

我的问题是REST API具有限制速率。因此,如果我的函数1将100个项目放在队列中,并且该函数2称为100次并行,则我的API调用将被阻止。因此,我需要某种节流。

您将如何实现?我可以告诉函数2等待特定时间,然后将项目添加回队列1,但是由于一切都是平行的,所以我可能会遇到僵局?

事先感谢您的想法!

我建议您在此处查看Azure耐用功能。耐用的功能框架使您可以协调复杂的工作流并管理状态。在您的示例中,您可以使用持久功能来解决限制速率问题

称为100倍并行

您可以通过配置host.json

在某种程度上限制(一定程度)
  • batchSize用于存储队列

  • maxConcurrentCalls用于服务总线

如果还不够

  • 函数1知道它必须处理多少个项目,因此可以计算接下来30分钟的"理想"分布

  • 将消息添加到队列时,它可以设置应拾取消息的时间(服务总线的ScheduledEnqueueTimeUtcinitialVisibilityDelay的CC_5)

  • 函数2将被称为"按计划",如果消息总数不太高

最新更新