phi*_*hil 5 azure azure-functions
我有一个非常适合持久性功能序列示例的用例:通过三个函数推送json负载,每个函数都会修改json图并将其转发给下一个函数。
在序列示例中,通过向协调器发出查询来检索序列的结果。
在我的用例中,我想直接返回这三个函数的结果,本质上是作为第三个函数的响应。
有没有办法做到这一点?明智吗?
这当然是可行的。您可以从 HTTP 触发器开始编排,并使用函数内的GetStatusAsync API 进行轮询并等待其完成。完成后,您可以从 HTTP 触发器返回结果。
也许是这样的:
public static async Task<JObject> Run(JObject input, DurableOrchestrationClient client)
{
string instanceId = await client.StartAsync("MyOrchestration", input);
for (int i = 0; i < 60; i++)
{
var status = await client.GetStatusAsync(instanceId);
if (status?.RuntimeStatus == "Completed")
{
return (JObject)status.Output;
}
// handle other status conditions, like failure
await Task.Delay(TimeSpan.FromSeconds(1));
}
// handle timeouts
}
Run Code Online (Sandbox Code Playgroud)
正如您从代码中看到的,您将遇到的问题是处理错误条件。例如,如果编排失败,你的函数会做什么?另外,如果需要很长时间才能完成怎么办?这些是您当然可以弄清楚的事情,但您需要防御性地编写代码来处理这些情况。
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |