我有一个耐用的功能扇出和输入模式,但似乎工作不可靠。每 10 分钟从 Timer 函数调用一次 Orchestration,但此后已将其增加到 20 分钟。使用 context.CallActivityAsync 调用 Activity 函数并返回一个整数(已处理的行数)。目前,传入的 workItems 应该只包含 2 个要处理的项目。第一项处理所有行并在日志中显示完整的行。第二项有时显示正在处理的行,但在某些时候它只是停止...没有其他活动被识别,并且“完成”永远不会显示在日志中。另外,第二个活动有时会显示它同时运行多次...我已经在我的开发机器上使用相同的数据尝试了这个确切的代码,并且它处理完成的时间不超过 5 分钟。我还将hosts.json 文件设置为
{
"version": "2.0",
"functionTimeout": "00:10:00",
"extensions": {
"queues": {
"maxPollingInterval": "00:00:05"
}
}
}
Run Code Online (Sandbox Code Playgroud)
编排:
public static async void RunOrchestrator(
[OrchestrationTrigger] DurableOrchestrationContext context, ILogger log)
{
log.LogInformation($"************** Fanning out ********************");
var parallelTasks = new List<Task<int>>();
//object[] workBatch = await context.CallActivityAsync<object[]>("GETVendors", null);
object[] workBatch = GETVendors(log); //work batch only has 2 items
for (int i = 0; i<workBatch.Length; i++)
{
Task<int> task …Run Code Online (Sandbox Code Playgroud)