azure - 持久函数 - 事件函数内的可等待任务

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

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

这是我的结构如下:

编排

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

我已经测试过了,一切正常。但我想知道这是否是好的做法? 对于持久函数来说,在事件函数中存在可等待任务是正常的吗?

最佳答案

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

Constraints仅适用于协调器功能。

关于azure - 持久函数 - 事件函数内的可等待任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50850513/

相关文章:

.net - Visual Studio 检测旧的 Azure Functions 核心工具版本

azure - 分布式计算/横向扩展模式的良好资源

c# - 任务构造函数与 Task.Run with async Action - 不同的行为

相当于 RabbitMQ QoS 的 Azure 服务总线

c# - 如何在 C# 中监视和重新启动引发异常的任务?

javascript - 异步等待中的 try catch 问题

.net-core - Azure Functions 和 AppInsights RequestTelemetry

azure 资源专用端点创建错误

c# - Azure 计划程序 Rest API - 更新作业错误 : Schedules are not supported for recurrence unit 'Hour'

Azure 流量管理器 需要完全更改 DNS?