适用于 Azure Functions 的 Azure 队列存储触发器和绑定概述

Azure Functions 可以在创建新的 Azure 队列存储消息时运行,并可在函数中写入队列消息。

操作 类型
在队列存储数据更改时运行函数 触发器
写入队列存储消息 输出绑定

添加到 Functions 应用

Functions 2.x 及更高版本

使用触发器和绑定需要引用相应的包。 NuGet 包用于 .NET 类库,而扩展捆绑包用于其他所有应用程序类型。

语言 添加方式... 备注
C# 安装 NuGet 包版本 3.x
C# 脚本、Java、JavaScript、Python、PowerShell 注册扩展捆绑包 建议将 Azure Tools 扩展用于 Visual Studio Code。
C# 脚本(Azure 门户中仅限联机) 添加绑定 若要更新现有绑定扩展而不必重新发布函数应用,请参阅更新扩展

存储扩展 5.x 和更高版本

新版本的存储绑定扩展可用作预览 NuGet 包。 此预览版引入了使用标识而不是机密进行连接的功能。 对于 .NET 应用程序,它还会更改可以绑定到的类型,并将 WindowsAzure.StorageMicrosoft.Azure.Storage 中的类型替换为 Azure.Storage.Queues 中的新类型。

备注

预览包不包括在扩展捆绑包中,必须手动安装。 对于 .NET 应用,请添加对包的引用。 对于所有其他应用类型,请参阅更新扩展

Functions 1.x

Functions 1.x 应用会自动引用 Microsoft.Azure.WebJobs NuGet 程序包(版本 2.x)。

Functions 1.x 中的 Azure 存储 SDK 版本

在 Functions 1.x 中,存储触发器和绑定使用 Azure 存储 SDK 版本 7.2.1(WindowsAzure.Storage NuGet 包)。 如果引用不同版本的存储 SDK 并绑定到函数签名中的一种存储 SDK 类型,Functions 运行时可能报告无法绑定到该类型。 解决办法是确保项目引用 WindowsAzure.Storage 7.2.1

host.json 设置

本部分介绍版本 2.x 及更高版本中可用于此绑定的全局配置设置。 下面的示例 host.json 文件仅包含此绑定的 2.x 版及更高版本设置。 若要详细了解 2.x 版及更高版本中的全局配置设置,请参阅 Azure Functions 的 host.json 参考

备注

有关 Functions 1.x 中 host.json 的参考,请参阅 Azure Functions 1.x 的 host.json 参考

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
属性 默认 说明
maxPollingInterval 00:00:01 队列轮询的最大间隔时间。 最小值为 00:00:00.100(100 毫秒),可递增至 00:01:00(1 分钟)。 在函数 2.x 和更高版本中,数据类型是 TimeSpan,而在版本 1.x 中,它以毫秒为单位。
visibilityTimeout 00:00:00 消息处理失败时的重试间隔时间。
batchSize 16 Functions 运行时同时检索并并行处理的队列消息数。 当处理的数量下降到 newBatchThreshold 时,运行时可获取另一个批,并开始处理这些消息。 因此,每个函数处理的最大并发消息数是 batchSize 加上 newBatchThreshold。 此限制分别应用于各个队列触发的函数。

如果要避免对队列上收到的消息并行执行,可以将 batchSize 设置为 1。 但是,只有在函数应用仅于单个虚拟机 (VM) 上运行时,此设置才可消除并发。 如果函数应用横向扩展到多个 VM,每个 VM 可运行每个队列触发的函数的一个实例。

batchSize 的最大值为 32。
maxDequeueCount 5 在将某个消息移到有害队列之前,尝试处理该消息的次数。
newBatchThreshold batchSize/2 只要同时处理的消息数下降到此数值,运行时即检索另一个批次。
messageEncoding base64 此设置仅适用于扩展版本 5.0.0 和更高版本。 它表示消息的编码格式。 有效值为 base64none

后续步骤