azure-functions - 在本地运行时,带有 QueueTrigger 的 Azure 函数(.Net Core 上的 v2)不支持 BatchSize

标签 azure-functions azure-functions-runtime queuetrigger

我正在使用 host.json 文件中的以下配置在本地使用 QueueTrigger 测试我的 Azure 功能(面向 .Net Core 的 v2)

“队列”:{
“批量大小”:1,
“新批次阈值”:0
}

目的是限制每个 Function App 实例一次只能处理一个队列 msg。

根据 this Azure function doc ,

If you want to minimize parallel execution for queue-triggered functions in a function app, you can set the batch size to 1. This setting eliminates concurrency only so long as your function app runs on a single virtual machine (VM).



在 host.json 文件中,有这些配置

{
“队列”:{
"maxPollingInterval": 2000,
"visibilityTimeout": "00:00:30",
“批量大小”:16,
"maxDequeueCount": 5,
“新批次阈值”:8
}
}

在我们的例子中,我不是要消除并发性,而是要确保每个函数应用实例一次只能处理一个队列 msg。然后,如果我们横向扩展函数应用以在多个 VM 上运行,则每个 VM 都可以保证一次仅处理一个队列 msg。更具体地说,计划是在App Service计划下运行azure功能,而不是Consumption计划(b/c你对Consumption计划的控制很少),并设置Scale Out规则来监控一个队列,最多N 个实例 (VM)。这种设置允许我们让每个 VM 一次运行一个 azure 函数应用程序实例,最多 N 个 VM。

当我在本地测试时,我的 azure 函数总是同时从队列中获取多个消息,即使在 host.json 文件中使用“BatchSize: 1”配置也是如此。我想知道它是否是 b/c 我正在本地 Azure 函数运行时测试它。我还没有在 Azure 中测试过这个。希望它在 Azure 中按预期工作。

最佳答案

问题原来是“队列”没有嵌套在“扩展”下

示例:

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8
        }
    }
}

在这种情况下,引用的扩展名( Microsoft.Azure.WebJobs.Extensions.Storage 也应该至少是 3.0.1,因为之前有 a bug 并将 newBatchThreshold 设置为 0。

关于azure-functions - 在本地运行时,带有 QueueTrigger 的 Azure 函数(.Net Core 上的 v2)不支持 BatchSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53637732/

相关文章:

c# - 运行计时器函数时,函数 'Function1' 的监听器无法启动

c# - 使用 Azure Function 队列为每个触发器设置 "batchSize"

azure - 更改 CloudQueueMessage 类型会导致异常绑定(bind)参数 'myQueueItem' 。 mscorlib : String reference not set to an instance of a String

azure - 在 VS 中运行 Azure Function 并在读取应用程序设置时出错

Azure函数应用程序-在执行和间歇性运行的旧代码之间共享全局变量

c# - Azure Key Vault 是否适合存储客户端应用程序上生成的加密 key ?

c# - 为什么注入(inject)到我的 Azure Function v2 中的 ILogger 缺少 APPINSIGHTS_INSTRUMENTATIONKEY?

azure - 在 Visual Studio 中调试 Azure Function 时创建的日志文件在哪里

python - 无法在函数应用中向 Azure 队列添加多个项目

azure - QueueTrigger 未选取消息 - Azure WebJobs SDK 3.0