c# - Azure 函数当时仅具有最大并发数

标签 c# azure azure-functions azure-servicebus-queues azure-webjobssdk

我有一个处理 SharePoint 操作的 Azure 函数。由于限制,我只希望同时运行 10 个并发函数,并且始终有 10 个函数同时运行。我正在考虑将函数与 Azure 服务总线队列一起使用。 Azure 平台中是否有任何构建可以实现此目的?服务总线不是必需的,因此其他集线器或队列是否更适合此目的。我查看了 Azure UI,但没有在服务总线端或功能上找到任何内容。

测试和观察:

我创建了一个测试,但没有成功。我创建并部署了一个休眠 20 秒的函数,然后将文档写入 Cosmos DB:

[FunctionName("SleepFunction")]
public static void Run([ServiceBusTrigger("provision", AccessRights.Manage, Connection = "AzureWebJobsServiceBus")]string myQueueItem, TraceWriter log)
{
    System.Threading.Thread.Sleep(20000);
    log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");

    string EndpointUrl = "https://kk-db-governance-engine.documents.azure.com:443/";
    string PrimaryKey = "xx";
    var docClient = new DocumentClient(new Uri(EndpointUrl), PrimaryKey);
    var result = docClient.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri("kk-governance", "test-function-concurrency"), new Run());

}

功能app.settings: enter image description here

如果我向队列添加 10 条消息,则会同时向数据库添加 10 个文档。我预计延迟 20 秒后只会添加 3 个。在应用程序设置中设置 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 似乎不起作用。有什么建议么?

<小时/>

我还尝试了 host.json 文件中的 maxConcurrentCalls:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsServiceBus": "xxx",
    "AzureWebJobsStorage": "xx",
    "AzureWebJobsDashboard": "xx"
  },
  "version": "2.0",
  "extensions": {
    "serviceBus": {
      "maxConcurrentCalls": "3"
    }
  }
} 

正如您在下面的屏幕截图中看到的,我使用消费计划: enter image description here

<小时/>

答案: 我得到了以下工作:

“服务总线”:{ “最大并发调用数”:3
}

最佳答案

可以在这里找到答案:Add Singleton support for Functions to ensure only one function running at a time

  1. 如果您按照消耗计划运行:为确保您不会扩展到多个实例,请设置以下应用设置:
    • WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT = 1
  2. 要在此实例中仅允许 X 个并发调用,您可以在 host.json 文件中指定此设置:

    { “版本”:“2.0”, “扩展”:{ “服务总线”:{ “最大并发调用数”:1 } } }

关于c# - Azure 函数当时仅具有最大并发数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53806592/

相关文章:

c# - 复选框内容内的列表框 - WPF

c# - Razor 中 ViewModel 的模型名称

python - 计时器触发 azure 函数 python v2 模型 - 部署到 azure 后,它显示 "no http trigger found "

python - 从 Azure 容器下载 blob 的最佳实践

azure - 无法让 Postman 在 Azure Function 上成功针对 Entra/Azure AD 进行身份验证

azure - 当依赖注入(inject)和日志记录与 Azure Functions 正常工作时,在没有更改代码的情况下突然开始失败

c# - MVC Razor 二级级联列表框不会过滤

c# - Java 和 C# 和 Python 一样是 "customizable"吗?

azure - 如何设置嵌套 ARM 模板中子资源的依赖关系?

node.js - 使用 azure 应用服务的 Nodejs Express Router REST API