Azure functions 我在哪里指定Azure服务总线中的MaxConcurrent调用

Azure functions 我在哪里指定Azure服务总线中的MaxConcurrent调用,azure-functions,azureservicebus,azure-servicebus-topics,Azure Functions,Azureservicebus,Azure Servicebus Topics,下面是我的Azure函数应用程序代码,它在服务总线主题上触发。经过一定的延迟后,我在控制台中遇到了这个错误“提供的锁无效。锁已过期,或者消息已从队列中删除。在删除消息时” 在谷歌搜索和引用其他堆栈溢出帖子时,要求尝试的一个解决方案是指定Maxconcurrent调用,但我无法在下面的代码中确定在哪里指定以及如何指定。如果有人能在这方面帮助我,如果还有其他选择,我应该尝试这个错误 public class TabularData { [FunctionName( "

下面是我的Azure函数应用程序代码,它在服务总线主题上触发。经过一定的延迟后,我在控制台中遇到了这个错误“提供的锁无效。锁已过期,或者消息已从队列中删除。在删除消息时”

在谷歌搜索和引用其他堆栈溢出帖子时,要求尝试的一个解决方案是指定Maxconcurrent调用,但我无法在下面的代码中确定在哪里指定以及如何指定。如果有人能在这方面帮助我,如果还有其他选择,我应该尝试这个错误

 public class TabularData
{
    

    [FunctionName( "ProcessTableData" )]
    public async Task Run( [ServiceBusTrigger("twister-events", "tabulardata-processor",
        Connection = "AzureServiceBusString")]
        string SbMsg, ExecutionContext context,
        ILogger log )
    {
        try
        {
            MyProject.CreateDefaultLoggerFactory();
            TableStorageManager manager = new TableStorageManager();
            if( !string.IsNullOrEmpty( SbMsg ) )
            {
                log.LogInformation( $"C# ServiceBus topic trigger function processed message: {SbMsg}" );
                TableStorageConfiguration rulesList = GetConfiguration( context.FunctionAppDirectory, "DataFileConfiguration.json" );
                await ProcessServiceBusMessage( SbMsg, rulesList, manager );
            }
        }
        catch( Exception Ex )
        {
            log.LogError( $"Error while uploading tabular data; {Ex.Message}" );
            throw;
        }
    }
更新:这是我的host.json文件的外观,但我仍然遇到相同的错误

{
  "functionTimeout": "05:05:00",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "version": "2.0",
  "extensions": {
    "serviceBus": {
      "prefetchCount": 100,
      "messageHandlerOptions": {
        "autoComplete": false,        
        "maxConcurrentCalls": 32,
        "maxAutoRenewDuration": "05:00:00"
      },
      "sessionHandlerOptions": {
        "autoComplete": false,
        "messageWaitTimeout": "05:00:30",
        "maxAutoRenewDuration": "05:55:00",
        "maxConcurrentSessions": 16
      }
    }
  }

该错误基本上意味着函数应用程序无法在锁定持续时间(默认情况下为30秒)内处理消息,另一种解决方案是将锁定持续时间从30增加到60,看看这是否有助于减少锁定无效异常的数量。 关于在host.json设置文件中指定“maxConcurrentCalls”的位置

 },
  "version": "2.0",
  "extensions": {
    "serviceBus": {
      "maxConcurrentCalls": "1"
    }
  }
} 

我能提供的并发调用的最大值是多少??以及增加锁定持续时间的替代解决方案。我在哪里做?你能查一下我的问题吗。我已经更新了我的host.json文件,但仍然收到相同的错误。如果您可以通过在服务总线中重新创建队列/主题来增加锁定持续时间,您将在创建过程中看到该选项。此外,您是否经常或偶尔收到此错误?我想知道是否您在host.json中将autocomplete设置为false,并且没有为代码中某个地方处理的消息调用complete,以防您收到所有消息的错误,然后尝试将autocomplete设置为“true”我应该从host.json文件中删除sessionHandlerOptions吗?将autocomplete设置为true是针对messageHandlerOptions的吗?另外,考虑到我有大约500条消息一条接一条地出现,函数会一条接一条地获取该消息,然后进行一些过滤和查询,并将其传递给Azur表格存储,我可以为锁定持续时间保留的最大持续时间是多少。每封邮件大约需要20/30秒,您可以尝试将其更新到60秒,考虑到maxautorenewduration为5分钟,总共大约需要6分钟。如果只有一些消息没有得到处理,那么您不必担心自动完成,我猜您是在手动调用complete(),您可能还想看看这篇文章,因为预回迁计数设置为100可能是一个问题