首页 > 解决方案 > Activity Function 被调用后,Durable Functions 会发生什么?

问题描述

所以我知道在持久函数中,当一个活动函数被调用时,当前的持久函数基本上停止并等待重新开始。我的问题是原始持久功能如何退出?我做了一些调试,没有抛出异常,也没有返回值。它是如何退出的?

   [FunctionName("DurableFunction")]
    public static async Task Durable([OrchestrationTrigger] IDurableOrchestrationContext context, ILogger log)
    {
        try
        {
            using (DisposeObject t = new DisposeObject("We created a new context", log))
            {
                string s = context.GetInput<string>();
                string result = await context.CallActivityAsync<string>("ActivityFunction", s);
                log.LogInformation(result);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
        finally
        {
            Console.WriteLine("When does this get hit?");
        }
    }

例如,在这个例子中,一次性对象是否直到最后才被丢弃?有没有办法检查我们何时启动一个新功能?

标签: c#azureazure-functionsazure-durable-functions

解决方案


编排功能应该是某种“无状态”。他们应该管理和编排活动流(和子编排),但不要自己执行操作或任何 IO 调用。拥有需要处置的对象表示某种非托管资源或 IO 绑定资源。这两者都是编排功能中的“不可行”。

(这可能无法从技术上回答您的问题,但希望能帮助您以一种好的方式设计它们。)


推荐阅读