我有一个持久的函数,它的输入由前一个活动函数决定,对于每个活动函数,我有多个可接受的任务,其中每个任务依赖于上一个任务的输出。
我的结构如下:
策划人
[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);
}我已经测试过了,一切都很好。但我想知道这是否是个好做法?在活动函数中具有持久功能的任务正常吗?
发布于 2018-06-14 06:03:26
是的,那很好。事实上,只要他们在合理的时间内完成(在消费计划上少于5分钟),你几乎可以在活动功能中做任何你喜欢的事情。您可以执行异步调用、切换线程和执行非确定性操作。
约束条件只适用于协调器函数。
https://stackoverflow.com/questions/50850513
复制相似问题