Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.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函数Blob触发器不';t处理所有斑点_C#_Azure_Azure Functions_Azure Storage Blobs - Fatal编程技术网

C# Azure函数Blob触发器不';t处理所有斑点

C# Azure函数Blob触发器不';t处理所有斑点,c#,azure,azure-functions,azure-storage-blobs,C#,Azure,Azure Functions,Azure Storage Blobs,我的存储容器中有大约35k个blob文件。其中一些在部署函数之前较旧,一些在部署函数应用程序之后较旧 这是我的函数签名 public async Task Run([BlobTrigger("portal/{filePath}")]Stream blob, Uri uri, IDictionary<string, string> metadata, string filePath, ILogger log) { log.Lo

我的存储容器中有大约35k个blob文件。其中一些在部署函数之前较旧,一些在部署函数应用程序之后较旧

这是我的函数签名

 public async Task Run([BlobTrigger("portal/{filePath}")]Stream blob, Uri uri,
            IDictionary<string, string> metadata, string filePath, ILogger log)
        {
         log.LogInformation($"{filePath}\n Size: {blob.Length} Bytes");

       // rest of the code
        }
公共异步任务运行([BlobTrigger(“portal/{filePath}”)]Stream blob,Uri,
IDictionary元数据、字符串文件路径、ILogger日志)
{
log.LogInformation($“{filePath}\n大小:{blob.Length}字节”);
//代码的其余部分
}
我的理解是,该功能将持续处理所有旧文件和新文件。 但当我在Azure门户上看到该日志时,就会发生这种情况

  • 2020-01-21T09:02:56.103[信息]执行“监视门户blob”(成功,Id=37cfaf56-3be2-4e6f-9e46-3558389daf4f)
  • 2020-01-21T09:04:33过去1分钟内没有新的痕迹
  • //更多时间戳
  • 2020-01-21T10:51:34过去108分钟内没有新的痕迹
  • 2020-01-21T10:52:34过去109分钟内没有新的痕迹
  • 2020-01-21T10:53:34过去110分钟内没有新的痕迹
  • 2020-01-21T10:54:34由于超时120分钟,日志流会话已结束
它随机处理几个文件,然后进入空闲状态,几小时后再处理另外20个文件。 有人能告诉我正确地配置blob触发器来处理所有现有的blob以及新的blob而不中断吗


仅供参考:我所有的blob都是简单的XML文件,每个都不到20kb。它所做的只是读取XML验证并将其存储在MongoDB中。如果我在本地运行此作业,在1分钟内至少会处理50个文件,因此30k个文件应在很长时间后完成。1月17日星期五大约有35k个文件,今天1月20日仍然有32k个文件(新添加的文件大约有2k个)。这意味着它在3天内只处理了5k个文件

在引擎盖下,它使用一些事件通知来触发您的功能。这意味着您的旧blob将不会被触发,除非您在上更改某些内容(例如元数据)

作为替代方案,您可以创建一个逻辑应用程序并使用Azure Storage Connector+List blob操作,然后在工作流中通过每个blob链接您当前的Azure功能


我建议您阅读


对于您的解决方案,当blob已在blob存储中创建/删除时,应考虑使用Azure事件网格进行实时推送通知

我认为它只处理新添加的文件。我也检查过,它没有处理过去3天上传的文件,但当我在门户网站上观看live log时,它正在处理2019年10月的文件。我不确定我是否理解您的建议。你是说创建另一个我调用ListAllBlob并调用当前processBlob API的应用程序吗?这是一个选项。正如我所说的,您的旧blob将不会被触发,因为那时没有关联的事件(在您编写azure函数之后)。您更希望列出所有blob并触发您的函数或进程,然后以另一种方式,如果我删除旧blob并将其重新上载(不更改文件)到容器中,该怎么办。这些应该被处理,对吗?