c# - Azure Function App v4 Blob 触发器并发

标签 c# azure concurrency azure-functions

过去几天我一直在网上查找,但找不到我的问题的明确答案。

我正在 Azure 中构建一个企业级解决方案,相当简单,有两个函数应用程序,一个用于处理将 CSV 文件上传到 blob 存储并回复 200 OK 响应。这工作得很好,并且可以扩展到通过我们的应用程序网关传入的并发请求的愚蠢数量。

还有第二个函数应用程序,然后使用 Blob 触发器开始从 Blob 存储中选取 CSV 文件并对其进行处理,准备将其插入 SQL 中。这是我正在努力理解微软指导的真正含义的解决方案的一部分。例如,如果我们同时收到 100 个 csv 文件,理想情况下,我希望此函数应用程序拾取尽可能多的文件并进行处理,它们都可以同时处理,因为任何 CSV 数据之间都没有依赖性。

我现在看到的可能是一次处理 6-8 个,该函数应用程序是基于消耗的应用程序,并且它的并发级别似乎比基于高级计划的函数应用程序更高。我在 Azure 中进行的测试。所以我想我可能错过了一些东西。如果有人以前处理过这个特定的场景,并且对设置或配置有一些建议,我可以调整或调整以获得所需的缩放级别,那么我将非常感激。

最佳答案

我不会使用 blob 触发的 azure 函数,因为它涉及轮询以确定要处理的 blob。来自 the docs :

If you require faster or more reliable blob processing, consider creating a queue message when you create the blob. Then use a queue trigger instead of a blob trigger to process the blob. Another option is to use Event Grid; see the tutorial Automate resizing uploaded images using Event Grid.

我会选择基于事件网格的方法。该服务的扩展性非常好。

关于c# - Azure Function App v4 Blob 触发器并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71703828/

相关文章:

Azure:如何在不重新启动应用程序服务的情况下重新加载环境变量

java - 在执行其他操作之前查找 Stream 大小

c# - 在 Silverlight 中维护 session

powershell - 禁用 Powershell DSC 的 Azure VMSS TLS 1.0 无法下载脚本

c# - 如何将对象转换为作为参数传递的类型

java - 从 Azure Web 作业调用 Powershell 脚本

java - 使用 Executors.defaultThreadFactory().newThread 的原因是什么?

c++ - std::this_thread::sleep_for() 和 GCC

c# - 如何用简单的注入(inject)器注入(inject)

c# - 有什么理由不使用标准 resx+static 绑定(bind)来本地化 WPF 吗?