
关于
适用于 .NET 的 Azure 资源管理器 SDK,用于持久任务调度器。
name: azure-resource-manager-durabletask-dotnet description: 用于 .NET 中 Durable Task Scheduler 的 Azure Resource Manager SDK。 risk: unknown source: community date_added: '2026-02-27'
Azure.ResourceManager.DurableTask (.NET)
用于通过 Azure Resource Manager 预配和管理 Azure Durable Task Scheduler 资源的管理平面 SDK。
⚠️ 管理平面 vs 数据平面
- 此 SDK (Azure.ResourceManager.DurableTask):创建调度器、任务中心、配置保留策略
- 数据平面 SDK (Microsoft.DurableTask.Client.AzureManaged):启动编排、查询实例、发送事件
安装
dotnet add package Azure.ResourceManager.DurableTask
dotnet add package Azure.Identity
当前版本:稳定版 v1.0.0 (2025-11-03),预览版 v1.0.0-beta.1 (2025-04-24) API 版本:2025-11-01
环境变量
AZURE_SUBSCRIPTION_ID=<your-subscription-id>
AZURE_RESOURCE_GROUP=<your-resource-group>
# 服务主体认证(可选)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
身份验证
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.DurableTask;
// 始终使用 DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);
// 获取订阅
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var subscription = armClient.GetSubscriptionResource(
new ResourceIdentifier($"/subscriptions/{subscriptionId}"));
资源层次结构
ArmClient
└── SubscriptionResource
└── ResourceGroupResource
└── DurableTaskSchedulerResource
├── DurableTaskHubResource
└── DurableTaskRetentionPolicyResource
核心工作流
1. 创建 Durable Task Scheduler
using Azure.ResourceManager.DurableTask;
using Azure.ResourceManager.DurableTask.Models;
// 获取资源组
var resourceGroup = await subscription
.GetResourceGroupAsync("my-resource-group");
// 定义使用 Dedicated SKU 的调度器
var schedulerData = new DurableTaskSchedulerData(AzureLocation.EastUS)
{
Properties = new DurableTaskSchedulerProperties
{
Sku = new DurableTaskSchedulerSku(DurableTaskSchedulerSkuName.Dedicated)
{
Capacity = 1 // 实例数量
},
// 可选:用于网络安全的 IP 白名单
IPAllowlist = { "10.0.0.0/24", "192.168.1.0/24" }
}
};
// 创建调度器(长时间运行的操作)
var schedulerCollection = resourceGroup.Value.GetDurableTaskSchedulers();
var operation = await schedulerCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-scheduler",
schedulerData);
DurableTaskSchedulerResource scheduler = operation.Value;
Console.WriteLine($"Scheduler created: {scheduler.Data.Name}");
Console.WriteLine($"Endpoint: {scheduler.Data.Properties.Endpoint}");
2. 创建带 Serverless SKU 的调度器
var serverlessData = new DurableTaskSchedulerData(AzureLocation.WestUS2)
{
Properties = new DurableTaskSchedulerProperties
{
Sku = new DurableTaskSchedulerSku(DurableTaskSchedulerSkuName.Serverless)
}
};
var operation = await schedulerCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-serverless-scheduler",
serverlessData);
3. 创建任务中心
var taskHubData = new DurableTaskHubData
{
Properties = new DurableTaskHubProperties()
};
var taskHubCollection = scheduler.GetDurableTaskHubs();
var hubOperation = await taskHubCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-task-hub",
taskHubData);
DurableTaskHubResource taskHub = hubOperation.Value;
Console.WriteLine($"Task Hub created: {taskHub.Data.Name}");
Console.WriteLine($"Dashboard URL: {taskHub.Data.Properties.DashboardUri}");
4. 配置保留策略
var retentionData = new DurableTaskRetentionPolicyData
{
Properties = new DurableTaskRetentionPolicyProperties
{
RetentionPeriodInDays = 30
}
};
var retentionCollection = taskHub.GetDurableTaskRetentionPolicies();
var retentionOp = await retentionCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"default",
retentionData);
5. 列出和管理资源
// 列出订阅中的所有调度器
await foreach (var s in subscription.GetDurableTaskSchedulersAsync())
{
Console.WriteLine($"Scheduler: {s.Data.Name} ({s.Data.Properties.Sku.Name})");
}
// 列出调度器中的所有任务中心
await foreach (var hub in scheduler.GetDurableTaskHubs().GetAllAsync())
{
Console.WriteLine($"Hub: {hub.Data.Name}");
}
// 获取特定调度器
var existingScheduler = await schedulerCollection.GetAsync("my-scheduler");
// 删除调度器
await scheduler.DeleteAsync(WaitUntil.Completed);
最佳实践
- 始终使用
DefaultAzureCredential进行身份验证 - 对长时间运行的操作使用
WaitUntil.Completed - 为生产环境配置 IP 白名单
- 设置适当的保留策略以管理存储成本
- 使用标签组织资源以便于管理
兼容工具
Claude CodeCursor
标签
后端开发
