.NET 8孤立工作者模式下如何修改Durable Functions运行时状态查询代码
.NET 8孤立工作者模式下获取Durable Functions运行时状态的修改方案
核心变化说明
在.NET 8孤立工作者模式中,Durable Functions的实例查询API已调整:原基于IDurableOrchestrationClient的ListInstancesAsync方法被替换为DurableTaskClient的GetInstancesAsync,查询条件类也从OrchestrationStatusQueryCondition改为InstanceQuery。
修改后的代码示例
首先通过构造函数注入DurableTaskClient,再执行实例查询:
using DurableTask.Core; using DurableTask.Client; public class YourFunctionClass { private readonly DurableTaskClient _durableTaskClient; // 构造函数注入DurableTaskClient public YourFunctionClass(DurableTaskClient durableTaskClient) { _durableTaskClient = durableTaskClient; } public async Task<List<OrchestrationInstance>> GetRunningOrchestrationsAsync(CancellationToken cancellationToken = default) { // 指定要筛选的运行时状态 var targetStatuses = new List<OrchestrationRuntimeStatus> { OrchestrationRuntimeStatus.Running }; // 构建查询条件 var instanceQuery = new InstanceQuery { RuntimeStatus = targetStatuses }; // 执行查询并返回实例列表 var queryResult = await _durableTaskClient.GetInstancesAsync(instanceQuery, cancellationToken); return queryResult.Items.ToList(); } }
关键修改点
- 依赖替换:用
DurableTaskClient替代原代码中的starter(即IDurableOrchestrationClient),通过依赖注入获取实例 - 查询条件:用
InstanceQuery类替换OrchestrationStatusQueryCondition来定义筛选规则 - 查询方法:调用
GetInstancesAsync替代ListInstancesAsync,返回结果包含分页信息,实例列表需从Items属性获取
内容的提问来源于stack exchange,提问作者thefunctionofnoreturn
相关产品推荐
相关产品推荐

