FunctionsDurableTaskClient
FunctionsDurableTaskClient的源码
client 调用的开始:
public static async Task<HttpResponseData> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req,
[DurableClient] DurableTaskClient client,
FunctionContext executionContext)
{
......
string instanceId = await client.ScheduleNewOrchestrationInstanceAsync(
nameof(HelloOrchestration));
......
}
client 类型是 DurableTaskClient,实际实现的类是 FunctionsDurableTaskClient。代码在 azure-functions-durable-extension 仓库的 src\Worker.Extensions.DurableTask\FunctionsDurableTaskClient.cs
文件中
类定义和构造函数
internal sealed class FunctionsDurableTaskClient : DurableTaskClient
{
private readonly DurableTaskClient inner;
public FunctionsDurableTaskClient(DurableTaskClient inner, string? queryString)
: base(inner.Name)
{
this.inner = inner;
this.QueryString = queryString;
}
Debug 看到这个 inner 的实现是 Microsoft.DurableTask.Client.Grpc.GrpcDurableTaskClient
ScheduleNewOrchestrationInstanceAsync()
public override Task<string> ScheduleNewOrchestrationInstanceAsync(
TaskName orchestratorName,
object? input = null,
StartOrchestrationOptions? options = null,
CancellationToken cancellation = default)
{
return this.inner.ScheduleNewOrchestrationInstanceAsync(orchestratorName, input, options, cancellation);
}
TaskName
TaskName 的代码在 durabletask-dotnet 仓库下的src\Abstractions\TaskName.cs
public readonly struct TaskName : IEquatable<TaskName>