azure - 限制 Azure Function App 中的 Azure 存储队列处理

标签 azure azure-functions

我创建了一个带有 Azure 存储队列触发器的 Azure Function 应用,该触发器处理一个队列,其中每个队列项都是一个 URL。该函数只是下载 URL 的内容。我有另一个函数,用于加载和解析站点的 XML Sitemap 并将所有页面 URL 添加到队列中。我遇到的问题是,Functions 应用程序运行得太快,它会影响网站,因此它开始返回服务器错误。有没有办法限制/调节 Functions 应用程序的运行速度?

当然,我可以编写一个简单的 Web 作业来串行处理它们(或者使用一些异步,但限制并发请求的数量),但我真的很喜欢 Azure Functions 的简单性,并且想尝试“无服务器”计算.

最佳答案

您可以考虑几个选项。

首先,您可以在 host.json 中配置一些旋钮来控制队列处理(记录为 here )。 queues.batchSize 旋钮是一次获取多少队列消息。如果设置为 1,则运行时将一次获取 1 条消息,并且仅在该消息的处理完成后才获取下一条消息。这可以为您在单个实例上提供一定程度的序列化。

另一个选项可能是您对排队的消息设置 NextVisibleTime,使其间隔开 - 默认情况下,排队的消息变得可见并准备立即处理。

最后一个选项可能是您将消息与站点的所有 URL 的集合一起放入队列,而不是一次一个,因此当处理消息时,您可以在函数中连续处理 URL,并且以这种方式限制并行性。

关于azure - 限制 Azure Function App 中的 Azure 存储队列处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094041/

相关文章:

javascript - Azure 中托管的 SignalR 函数建立了连接,但不触发 SignalRTrigger 函数

azure - Azure 上应用服务的 VNET 集成?

laravel - 从 Azure Blob 存储流式传输视频无法搜索且速度极慢

json - 在 VS 2017 Azure Function 开发中从 local.settings.json 读取值

azure - azure apim 网关 URL 的 HTTP 到 HTTPS 重定向

c# - Azure Functions - 当我尝试本地调试时,配置设置返回 null

javascript - 如何从 Azure Function 返回 HTML 内容

c# - 发布 JSON 数据 WebAPI

azure - 查询 Azure 表存储中的空值

azure - 从连接到 Key Vault 的 Azure DevOps 变量组访问证书指纹