你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Functions 通过触发器和绑定与 Azure 服务总线集成。 与服务总线集成后,你可以构建响应和发送队列或主题消息的函数。
操作 | 类型 |
---|---|
创建服务总线队列或主题消息时运行函数 | 触发器 |
发送 Azure 服务总线消息 | 输出绑定 |
安装扩展
你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:
函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南。
通过安装此 NuGet 包将该扩展添加到你的项目。
扩展的功能因扩展版本而异:
此版本引入了使用标识而不是机密进行连接的功能。 有关使用托管标识配置函数应用的教程,请参阅使用基于标识的连接创建函数应用教程。
此版本允许绑定到 Azure.Messaging.ServiceBus 中的类型。
此版本支持通过 .NET Aspire 集成配置触发器和绑定。
通过安装 NuGet 包版本 5.x 将该扩展添加到你的项目。
安装捆绑包
服务总线绑定是在 host.json 项目文件中指定的扩展捆绑包的一部分。 如果尚未安装捆绑包,你可能需要修改此捆绑包才能更改绑定的版本。 若要了解详细信息,请参阅扩展捆绑包。
此版本引入了使用标识而不是机密进行连接的功能。 有关使用托管标识配置函数应用的教程,请参阅使用基于标识的连接创建函数应用教程。
可以通过在 host.json
文件中添加或替换以下代码,从扩展捆绑包 v3 添加该扩展的这一版本:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
若要了解详细信息,请参阅更新扩展。
绑定类型
.NET 支持的绑定类型取决于扩展版本和 C# 执行模式,可以是以下类型之一:
请选择一个版本来查看模式和版本的绑定类型详细信息。
独立工作进程支持下表所示的参数类型。
服务总线触发器
如果希望函数处理单条消息,服务总线触发器可以绑定到以下类型:
类型 | 说明 |
---|---|
string |
字符串格式的消息。 当消息为简单文本时使用。 |
byte[] |
消息的字节数。 |
JSON 可序列化类型 | 当事件包含 JSON 数据时,Functions 会尝试将 JSON 数据反序列化为普通的旧 CLR 对象 (POCO) 类型。 |
ServiceBusReceivedMessage1 | 消息对象。 绑定到 ServiceBusReceivedMessage 时,还可以选择包含 ServiceBusMessageActions1,2 类型的参数来执行消息解决作。 |
如果希望函数处理一批消息,服务总线触发器可以绑定到以下类型:
类型 | 说明 |
---|---|
T[] ,其中 T 是单消息类型之一 |
批处理中的事件数组。 每个条目表示一个事件。 绑定到 ServiceBusReceivedMessage[] 时,还可以选择包含 ServiceBusMessageActions1,2 类型的参数来执行消息解决作。 |
1 要使用这些类型,需要引用 Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 或更高版本以及 SDK 类型绑定的常见依赖项。
2 使用时,将ServiceBusMessageActions
的属性设置为 AutoCompleteMessages
。 这可以防止运行时在成功调用函数后尝试完成消息。
服务总线输出绑定
如果希望函数写入单个消息,服务总线输出绑定可以绑定到以下类型:
类型 | 说明 |
---|---|
string |
字符串格式的消息。 当消息为简单文本时使用。 |
byte[] |
消息的字节数。 |
JSON 可序列化类型 | 表示消息的对象。 函数尝试将普通旧 CLR 对象 (POCO) 类型序列化为 JSON 数据。 |
如果希望函数写入多个消息,服务总线输出绑定可以绑定到以下类型:
类型 | 说明 |
---|---|
T[] ,其中 T 是单消息类型之一 |
包含多个消息的数组。 每个条目表示一个消息。 |
对于其他输出方案,请直接在 Azure.Messaging.ServiceBus 中创建和使用 ServiceBusClient 和其他类型的服务总线。 有关使用依赖项注入从 Azure SDK 创建客户端类型的示例,请参阅 “注册 Azure 客户端 ”。
SDK 绑定类型
Azure 服务总线的 SDK 类型为预览版。 按照 适用于服务总线的 Python SDK 绑定示例 开始使用 Python 中的服务总线的 SDK 类型。
重要
使用 SDK 类型绑定需要 Python v2 编程模型。
捆绑 | 参数类型 | 示例 |
---|---|---|
ServiceBus 触发器 | ServiceBusReceivedMessage | ServiceBusReceivedMessage |
host.json 设置
本部分介绍可用于此绑定的配置设置,具体取决于运行时和扩展版本。
{
"version": "2.0",
"extensions": {
"serviceBus": {
"clientRetryOptions":{
"mode": "exponential",
"tryTimeout": "00:01:00",
"delay": "00:00:00.80",
"maxDelay": "00:01:00",
"maxRetries": 3
},
"prefetchCount": 0,
"transportType": "amqpWebSockets",
"webProxy": "https://proxyserver:8080",
"autoCompleteMessages": true,
"maxAutoLockRenewalDuration": "00:05:00",
"maxConcurrentCalls": 16,
"maxConcurrentSessions": 8,
"maxMessageBatchSize": 1000,
"minMessageBatchSize": 1,
"maxBatchWaitTime": "00:00:30",
"sessionIdleTimeout": "00:01:00",
"enableCrossEntityTransactions": false
}
}
}
clientRetryOptions
设置仅适用于与服务总线服务的交互。 它们不影响函数执行的重试。 有关详细信息,请参阅重试。
1 使用 minMessageBatchSize
和 maxBatchWaitTime
需要 v5.10.0 或更高版本的 Microsoft.Azure.WebJobs.Extensions.ServiceBus
包。