持久功能 - 活动功能中的等待任务

时间:2018-06-14 05:56:04

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

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

这是我的结构如下:

Orchestrator的

[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);
}

我测试了这一切,一切正常。但我想知道这是不是很好的做法? 在活动函数中为持久函数设置等待任务是否正常?

1 个答案:

答案 0 :(得分:2)

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

Constraints仅适用于协调器功能。