使用 Durable Task Scheduler 作为 Durable Functions 应用的后端,以存储业务流程协调和实体的运行时状态。 在本快速入门中,你将克隆一个已预先配置为使用 Durable Task Scheduler 的 Hello Cities 示例,使用模拟器在本地运行它,然后将其部署到 Azure。
- 克隆为 Durable Task Scheduler 预配置的 Hello Cities 示例。
- 设置用于本地开发的 Durable Task Scheduler 模拟器。
- 运行示例并验证编排输出。
- 将应用部署到Azure并通过 Durable Task Scheduler 仪表板对其进行监视。
先决条件
Tip
模拟器启动后,可在 http://localhost:8082 访问 Durable Task Scheduler 仪表板以监控编排。
运行快速入门示例
安装最新版本的 Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged 包,使用 dotnet add package 命令:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease
注意
Durable Task Scheduler 扩展需要 Microsoft.Azure.Functions.Worker.Extensions.DurableTask 或更高版本 1.2.2 。
生成并启动函数应用:
dotnet build func start
在 host.json中,更新 extensionBundle 属性以使用版本 4.32.0 或更高版本,其中包括 Durable Task Scheduler 支持:
{
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.32.0, 5.0.0)"
}
}
启动函数应用:
func start
生成并启动函数应用:
mvn clean package mvn azure-functions:run
在单独的终端中,触发一次编排:
$response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/DurableFunctionsOrchestrationCSharp1_HttpStart $response
在单独的终端中,触发一次编排:
$response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/StartChaining $response
响应包含业务流程协调实例的状态 URL。 查询
statusQueryGetUri以查看结果:Invoke-RestMethod -Uri $response.statusQueryGetUri当业务流程的
runtimeStatus为Completed时,输出包含问候结果。 如果runtimeStatus显示Running或Pending,请稍等片刻,然后再次查询。在 Durable Task Scheduler 仪表板
http://localhost:8082中查看有关协调实例的更多详情。
了解持久任务调度程序的配置
使这些示例使用 Durable Task Scheduler 的关键配置位于两个文件中。
host.json
storageProvider 部分告知Durable Functions使用持久任务计划程序(azureManaged),而不是默认Azure 存储后端:
{
"extensions": {
"durableTask": {
"hubName": "default",
"storageProvider": {
"type": "azureManaged",
"connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
}
}
}
}
local.settings.json
连接字符串指向供开发使用的本地模拟器:
{
"Values": {
"DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None"
}
}
注意
若要迁移现有Durable Functions应用,请更新这两个文件,并为语言添加相应的扩展包。 对于 .NET,请安装 Microsoft.Azure。Functions.Worker.Extensions.DurableTask.AzureManaged NuGet 包。 对于其他语言,请将扩展捆绑包 host.json 更新为版本 [4.32.0, 5.0.0)。
在 Azure 中运行应用
创建所需资源
按照 Function App 集成创建流在 Azure 上创建 Durable Task Scheduler 实例和 Azure Functions 应用。 此过程将自动设置基于身份的访问,并配置应用程序访问计划程序所需的环境变量。
导航到“函数应用创建”边栏选项卡。
在 创建函数应用(消耗) 边栏选项卡中,填写 基本信息 选项卡中的信息。
领域 Description Subscription 选择您的 Azure 订阅。 资源组 选择现有资源组,或单击“ 新建 ”以创建新资源组。 函数应用名称 为函数应用创建唯一名称。 是否要部署代码或容器映像? 保持选中“代码”选项。 区域 选择其中 一个受支持的区域。 运行时堆栈 选择用于本快速入门的运行时。 版本 选择运行时堆栈版本。 实例大小 选择实例大小,或使用默认选择。 区域冗余 保留为默认禁用设置。 选择“ Durable Functions ”选项卡。
选择 “Azure 托管:持久任务计划程序 ”作为 Durable Functions 的后端提供程序。
创建调度器资源。 此操作会自动创建任务中心。
领域 Description 存储后端 选择Azure 托管的持久化任务计划程序。 区域 确保计划程序和函数应用区域相同。 持久任务计划程序 使用提供的计划程序名称,或单击“ 新建 ”以创建自定义名称。 Plan 选择最适合项目的 定价计划 。 查看 “选择业务流程框架 指南”,确定哪个计划最适合用于生产用途。 容量单位 仅当选择了“专用”定价计划时适用。 最多可以选择 3 个容量单位。 单击“ 查看 + 创建 ”以查看资源创建。
系统将自动创建具有所需角色访问控制(RBAC)权限的用户分配托管标识,并将其添加到函数应用中。 可以在摘要视图中找到与托管标识资源相关的信息,例如:
分配给它的角色(持久任务数据参与者)
范围限定为任务中心级别的分配
验证通过后单击创建。
资源部署可能需要大约 15 到 20 分钟。 完成后,可以将应用部署到Azure。
将函数应用部署到 Azure
重要
部署到现有函数应用程序时,总是会覆盖该应用程序在 Azure 中的所有内容。
在命令面板中,输入并选择“Azure Functions: Deploy to Function App”。
选择你刚才创建的函数应用。 当系统提示覆盖以前的部署时,请选择“部署”,将函数代码部署到新的函数应用资源。
部署完成后,选择“查看输出”,以查看创建和部署结果,其中包括已创建的 Azure 资源。 如果错过了通知,请选择右下角的铃铛图标再次查看。
Functions Premium 计划中的应用
如果应用在 Functions Premium 计划中运行,请在部署后启用 运行时缩放监视 设置,以确保应用根据负载自动缩放:
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
测试函数应用
运行以下命令以获取函数的 URL:
az functionapp function list --resource-group <RESOURCE_GROUP_NAME> --name <FUNCTION_APP_NAME> --query '[].{Function:name, URL:invokeUrlTemplate}' --output json
检查业务流程状态
检查持久任务计划程序仪表板上的业务流程实例和活动详细信息的状态。 访问仪表板需要登录。
注意
以下说明展示了针对特定任务中心的角色分配。 如果需要在计划程序中访问所有任务集线器,请在计划程序级别上执行分配。
请进入门户上的持久任务计划程序资源。
单击任务中心名称。
在左侧菜单中,选择“访问控制(IAM)”。
单击“ 添加” 以添加角色分配。
搜索并选择“持久任务数据参与者”。 单击 “下一步” 。
在“成员”选项卡中,对于“将访问权限分配给”,请选择“用户、组或服务主体”。
对于“成员”,单击“+ 选择成员”。
在 “选择成员 ”窗格中,搜索姓名或电子邮件:
选择电子邮件并单击 “选择 ”按钮。
单击“ 查看 + 分配 ”完成角色分配。
分配角色后,单击任务中心资源的左侧菜单中的 “概述 ”,并导航到位于“ Essentials ”顶部的仪表板 URL。
清理资源
如果你不再需要为完成本快速入门而创建的资源,为避免在 Azure 订阅中产生相关费用,请删除资源组和所有相关资源。
后续步骤
- 详细了解持久任务计划程序仪表板。
- 排查在使用持久任务计划程序时可能会遇到的任何错误。