Azure functions 子搜索器不';似乎没有完成

Azure functions 子搜索器不';似乎没有完成,azure-functions,azure-durable-functions,Azure Functions,Azure Durable Functions,我有一个编排,它尝试使用扇出模式来处理项目,然后将它们添加到另一个队列。在整个学习过程中,我发现我的大部分问题都是因为缺少了一个等待,或者试图做一些事情,比如不使用上下文来获得时间。然而,在这个子架构中,我无法找出我做错了什么,从而阻止了所有代码的执行 [函数名(“O_ProcessLearnerQueueItems”)] 公共异步任务进程LearnerQueueItems( [OrchestrationTrigger]IDurableOrchestrationContext ctx, 伊洛格测

我有一个编排,它尝试使用扇出模式来处理项目,然后将它们添加到另一个队列。在整个学习过程中,我发现我的大部分问题都是因为缺少了一个
等待
,或者试图做一些事情,比如不使用上下文来获得时间。然而,在这个子架构中,我无法找出我做错了什么,从而阻止了所有代码的执行

[函数名(“O_ProcessLearnerQueueItems”)]
公共异步任务进程LearnerQueueItems(
[OrchestrationTrigger]IDurableOrchestrationContext ctx,
伊洛格测井
)
{
var currentTime=ctx.CurrentUtcDateTime;
列表处理
=等待ctx.CallActivityAsync(“A_GetItemsForProcessingByDate”,currentTime.ToUniversalTime());
if(needProcessing!=null&&needProcessing.Count>0)
{
//设置进程中的项目
等待ctx.CallActivityAsync(“A_SetQueueItemsProcessing”,needProcessing);
List gatherQuestions=新列表();
foreach(需要处理的var项目)
{
Task Task=ctx.callsubarch estratorasync(“SO_GatherQuestionsForLearnerQueueItems”,item);
收集问题。添加(任务);
}
//下一行中的我的断点命中,它调用子编排器;最后,活动中的我的断点(称为我的断点,子编排器被命中)
等待任务。WhenAll(收集问题);
//然而,我从来没有做到这一点
等待ctx.CallActivityAsync(“A_SetQueueItemsProcessed”,needProcessing);
}
}
我的Subrchestrator如下所示,它应该获取一些所需的信息,然后向队列中添加消息

[FunctionName(“SO_GatherQuestionsForLearnerQueueItems”)]
公共异步任务集合QuestionsForLearnerQueueItems(
[OrchestrationTrigger]IDurableOrchestrationContext ctx,
ServiceBus(“要发送的消息”,Connection=“AzureWebJobsServiceBus”)]ICollector收集器,
伊洛格测井
)
{
LearnerQueueItem=ctx.GetInput();
Message Message=wait ctx.CallActivityAsync(“A_GetQuestionMessageForLearnerQueueItem”,item);
//下一行上的断点永远不会被命中
collector.Add(消息);
}
我已经确认
A_GetQuestionMessageForLearnerQueueItem
做了它应该做的一切,并返回
消息
,但从未到达
收集器。添加(消息)
。这是一个很大的方法,所以我在这里对它进行了一些调整:

[FunctionName(“A_GetQuestionMessageForLearnerQueueItem”)]
公共异步任务GetQuestionMessage(
[ActivityTrigger]LearnerQueueItem输入,
伊洛格测井
)
{
尝试
{
PlatformQuestion PlatformQuestion=wait_questionService.GetQuestion(…);
QuestionMessage QuestionMessage=新的QuestionMessage(){…};
QuestionToSendProperties QuestionToSendProperties=新的QuestionToSendProperties(){…};
var message=新消息();
message.Body=Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(questionMessage));
...
返回消息;
}
捕获(例外情况除外)
{
var debug=true;
返回null;
}
}

如果您将ServiceBus输出绑定放在活动函数上而不是eOrchestrator函数上,会怎么样?澄清一下-您是否在问如果我将输出绑定放在单独的活动函数上而不是放在子搜索器内会怎么样?是,活动函数是持久功能编排中的基本工作单元,因此在这方面进行输出绑定是有意义的。同样在我的设置中,ServiceBus作为活动函数上的输出绑定没有任何问题。