【问题标题】:Durable Functions - Awaitable Tasks inside Activity FunctionDurable Functions - Activity 函数中的可等待任务
【发布时间】:2018-06-14 14:03:26
【问题描述】:

我有一个持久函数,其输入由先前的活动函数确定 对于每个活动功能,我有多个等待任务,其中每个任务都依赖于前一个任务的输出。

这是我的结构如下:

协调器

[FunctionName("MessageController")]
public static async void Run(
    [OrchestrationTrigger] DurableOrchestrationContext context,
    TraceWriter log)
{
    if (!context.IsReplaying) log.Warning("MessageController started");

    var Input1= context.CallActivityAsync<ResultMessage>("Function_1", new InputMessage());
    var Input2= context.CallActivityAsync<ResultMessage>("Function_2", Input1);
    var Input3= context.CallActivityAsync<ResultMessage>("Function_2", Input2);

}

活动功能

[FunctionName("Function_1")]
public static ResultMessage Run(
    [ActivityTrigger] DurableActivityContext activityContext,
    TraceWriter log)
{
    //Awaitable task
    var taskOutput= await DoSomething();

    //Awaitable task
    var token = await DoAnotherThing(taskOutput);
}

我已经对此进行了测试,一切正常。但我想知道这是否是好习惯? 对于持久函数,在活动函数中有等待任务是否正常?

【问题讨论】:

    标签: azure async-await azure-functions azure-durable-functions


    【解决方案1】:

    是的,这完全没问题。事实上,你可以在活动功能中做任何你喜欢的事情,只要它们在合理的时间内完成(消耗计划少于 5 分钟)。您可以进行异步调用、切换线程和进行非确定性操作。

    Constraints 仅适用于编排功能。

    【讨论】:

    • 感谢您的及时回复米哈伊尔。必须等待 6 分钟,直到我可以将您的回复标记为已回答 :)!
    • 只是补充,消费计划功能现在可以run up to 10m
    • 谢谢@JerryLiu,我想我厌倦了说“默认5分钟,但你可以让它10分钟”;)
    • 我们会允许持久函数运行数天或数周吗?
    • @AlexGordon Orchestrator 可以“运行”数天或数周,而活动函数则不能
    猜你喜欢
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2019-09-17
    相关资源
    最近更新 更多