具有ActivityTrigger的函数的响应绑定

时间:2019-01-29 11:37:32

标签: c# .net-core azure-durable-functions

我想创建一个调用“活动函数”的Durable Function,然后在v2函数应用程序中使用dotnet核心返回一个值。该函数当然会验证其输入,因此可能会返回成功的值,或者可能返回无效的错误:HTTP值为200或400。我的活动功能将如下所示:

[FunctionName("MyFunc")]
public static async Task<object> Run(
        [ActivityTrigger] string input,
        ILogger log)
{
    // return something like
    return new { Status = "OK", Content = content };
}

我应该为此使用哪种返回类型?应该让我自己的DTO成为有效的响应,还是有办法将HttpResponse对象返回给协调器?

1 个答案:

答案 0 :(得分:2)

我认为这里可能有一个更简单的解决方案。您是否考虑过如果验证通过则返回一个简单值,如果验证失败则抛出由协调器处理的异常?

ActivityTrigger绑定同时处理输入和输出。根据{{​​3}}上的文档,活动函数可以将任何JSON可序列化的对象返回给协调器,活动函数抛出的未处理的异常将被编组回协调器,由catch块对其进行处理。

活动协调器通信不使用HTTP请求和响应;它使用Azure存储表记录历史事件,并使用Azure存储队列分别触发活动以执行异步工作或在某些活动的异步工作完成后唤醒协调器。除非您在业务流程中的某个位置特别需要HttpResponse对象,否则无需将活动的返回值包装为一个。