Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure持久功能:链接多个功能时,新实例在任何消息完成处理之前启动_C#_Azure_Azure Durable Functions - Fatal编程技术网

C# Azure持久功能:链接多个功能时,新实例在任何消息完成处理之前启动

C# Azure持久功能:链接多个功能时,新实例在任何消息完成处理之前启动,c#,azure,azure-durable-functions,C#,Azure,Azure Durable Functions,我有一个带有QueueTrigger的Azure持久函数。在内部,我有一些Azure函数,这些函数随子编排一起调用。这是密码 var processKatartItem = context.GetInput<KatartItem>(); if (!processKatartItem.ProcessLeadTime && !processKatartItem.ProcessPrice && !processKatartItem.ProcessStoc

我有一个带有QueueTrigger的Azure持久函数。在内部,我有一些Azure函数,这些函数随子编排一起调用。这是密码

 var processKatartItem = context.GetInput<KatartItem>();

if (!processKatartItem.ProcessLeadTime && !processKatartItem.ProcessPrice && !processKatartItem.ProcessStock)
{
    await context.CallActivityWithRetryAsync("LLGFeedPreProductMessageProcessor", new RetryOptions(TimeSpan.FromSeconds(1), 5), processKatartItem);
}

var tasks = new Task[processKatartItem.vardatas.Count];

for (var i = 0; i < processKatartItem.vardatas.Count; i++)
{
    tasks[i] = context.CallSubOrchestratorWithRetryAsync("LLGFeedProductOrchestrator", new RetryOptions(TimeSpan.FromSeconds(1), 5), new ProductProcessingModel
    {
        ProcessKatartItem = processKatartItem,
        ProcessVardata = processKatartItem.vardatas[i]
    });
}

await Task.WhenAll(tasks);
await context.CallActivityWithRetryAsync("LLGFeedFinalizeMessage", new RetryOptions(TimeSpan.FromSeconds(1), 5), processKatartItem);

这有什么原因吗?我认为无服务器持久功能的强大之处在于,您可以同时执行orchestrator。@MarieHoeger这是真的,我想确保持久功能不会破坏我们的网站。最后一个函数调用将调用我们网站上的Web Api端点。尽管我限制了持久函数,使其只能同时运行2个编排器和10个活动,但看起来最终会执行大量webapi调用(每次大约10个)。你是否尝试过调整你的应用程序以降低创建编排的速率?@KatyShimizu我已共享了我的主机。我只是在这里抛出一些东西(还没有使用耐久性测试此应用程序设置的行为),但这可能相关吗?这有什么原因吗?我认为无服务器持久功能的强大之处在于,您可以同时执行orchestrator。@MarieHoeger这是真的,我想确保持久功能不会破坏我们的网站。最后一个函数调用将调用我们网站上的Web Api端点。尽管我限制了持久函数,使其只能同时运行2个编排器和10个活动,但看起来最终会执行大量webapi调用(每次大约10个)。你是否尝试过调整你的应用程序以降低创建编排的速率?@KatyShimizu我已共享了我的主机。我只是在这里抛出一些东西(还没有使用耐久性测试此应用程序设置的行为),但这可能相关吗?
var processModel = context.GetInput<ProductProcessingModel>();

await context.CallActivityWithRetryAsync("LLGFeedProductSpecificationProcessor", new RetryOptions(TimeSpan.FromSeconds(1), 5), processModel);
await context.CallActivityWithRetryAsync("LLGFeedProductMessageProcessor", new RetryOptions(TimeSpan.FromSeconds(1), 5), processModel);
await context.CallActivityWithRetryAsync("LLGFeedProductMappingProcessor", new RetryOptions(TimeSpan.FromSeconds(1), 5), processModel);
await context.CallActivityWithRetryAsync("LLGFeedProductPriceProcessor", new RetryOptions(TimeSpan.FromSeconds(1), 5), processModel);
{
    "version": "2.0",
    "extensions": {
      "durableTask": {
        "HubName": "LLGFeedTaskHub",
        "ControlQueueBatchSize": 8,
        "PartitionCount": 2,
        "MaxConcurrentActivityFunctions": 10,
        "MaxConcurrentOrchestratorFunctions": 2,
        "AzureStorageConnectionStringName": "AzureWebJobsStorage"
      },
      "queues": {
        "batchSize": 10,
        "newBatchThreshold": 5
      }
    },
    "functionTimeout": "00:10:00"
}