我有一个使用DurableOrchestrationClient的队列触发器azure函数。我能够开始我的业务流程功能的新执行,它会触发多个活动触发器功能并等待它们全部处理。一切都很好。
我的问题是我无法检查我的业务流程功能(“TestFunction”)的状态。 GetStatusAsync始终返回null。我需要知道编排功能何时实际完成并处理返回对象(bool)。
public static async void Run([QueueTrigger("photostodownload", Connection = "QueueStorage")]PhotoInfo photoInfo, [OrchestrationClient]DurableOrchestrationClient starter, TraceWriter log)
{
var x = await starter.StartNewAsync("TestFunction", photoInfo);
Thread.Sleep(2 * 1000);
var y = await starter.GetStatusAsync(x);
}
答案 0 :(得分:0)
StartNewAsync
将消息排入控制队列,并不意味着业务流程立即启动。
GetStatusAsync
会返回null
。所以,在你睡了2秒钟的时候,编排可能还没有开始。
您应该定期轮询业务流程的状态,或者从业务流程中发送类似Done
事件的内容作为工作流程的最后一步,而不是具有固定的等待超时。
答案 1 :(得分:0)
您使用的是1.0或2.0功能吗?关于Github上的Function 2.0运行时报告了类似的问题。
https://github.com/Azure/azure-functions-durable-extension/issues/126
另外,当你说一切正常时,你的意思是activityTrigger功能完全执行吗?
您是在本地运行功能还是在Azure上部署?