将函数应用从 Azure 服务总线扩展版本 4.x 迁移到版本 5.x
本文重点介绍升级使用 Azure 服务总线扩展版本 4.x 的现有 Azure Functions 应用程序的注意事项,以使用较新的扩展版本 5.x。 从版本 4.x 迁移到 Azure 服务总线扩展版本 5.x 时,应用程序发生了重大更改。
重要
自 2025 年 3 月 31 日,Azure 服务总线扩展版本 4.x 将停用。 使用该扩展的扩展和所有应用程序将继续正常运行,但 Azure 服务总线将停止为此扩展提供进一步的维护和支持。 我们建议迁移到扩展的最新版本 5.x。
本文将引导你完成将函数应用迁移到 Azure 服务总线扩展的 5.x 版本的过程。 由于项目升级说明与语言相关,因此请务必从文章顶部的选择器中选择你的开发语言。
更新扩展版本
.NET Functions 使用项目中安装的扩展作为 NuGet 包。 根据 Functions 进程模型,要更新的 NuGet 包会有所不同。
函数进程模型 | Azure 服务总线扩展 | 建议的版本 |
---|---|---|
进程模型 | Microsoft.Azure.WebJobs.Extensions.ServiceBus | >= 5.13.4 |
独立工作模型 | Microsoft.Azure.Functions.Worker.Extensions.ServiceBus | >= 5.14.1 |
更新 .csproj
项目文件,将最新的扩展版本用于进程模型。 以下 .csproj
文件使用的是 Azure 服务总线扩展版本 5。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<OutputType>Exe</OutputType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.21.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.ServiceBus" Version="5.16.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.16.4" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
更新扩展捆绑包
默认情况下,非 .NET 函数应用使用扩展捆绑包来安装绑定扩展。 Azure 服务总线版本 5 扩展是扩展捆绑包版本 4 的一部分。
若要更新应用程序以使用最新版本的扩展捆绑包,请更新 host.json
。 以下 host.json
文件使用的是扩展捆绑包的版本 4。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
修改函数代码
Azure Functions Azure 服务总线扩展版本 5 基于 Azure.Messaging.ServiceBus SDK 版本 3 构建,该版本删除了对 Message
类的支持。 请改用类型 ServiceBusReceivedMessage
从服务总线队列和订阅接收消息元数据。