首页 > 解决方案 > 队列并发触发的 Azure Function

问题描述

我有一个 azure 函数,它从 azure 数据库调用存储过程。它的工作方式是,当它收到消息“A”时,它应该使用 BULK INSERT .csv 文件将文件“A”从 blob 存储复制到数据库中的临时表“A”中,我可能会在一秒钟内得到几个文件需要插入到单独的表中。

问题是,当我使用“Microsoft Azure 存储资源管理器”在队列中手动添加一条且只有一条消息以触发该功能时,它工作得非常好,我可以看到目标表中的数据,但是当它自动运行时,它必须处理多个文件。所以没有一个表有任何数据,也没有一个文件被复制!也不例外!诡异的!

那么有谁知道当我们同时调用几个天蓝色函数时它是如何工作的,特别是当它们通过调用与不同源和目标一起工作的相同存储过程来进行数据库事务时?

标签: stored-proceduresconcurrencyazure-functionsmessage-queue

解决方案


与此函数相关的队列正在由另一个 azure 函数填充,该函数将文件从 FileShare 复制到 BlobStorage 并且由于此过程是异步进程,然后第一个 azure 函数复制文件,在复制完成之前,它执行包含的其余代码当文件大小为 0KB 时,将消息添加到第二个队列并运行第二个函数


推荐阅读