将函数应用从 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 从服务总线队列和订阅接收消息元数据。

后续步骤