You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Logic App并行处理Blob写入丢消息问题咨询

问题分析与解决方案

现有实现的问题

你的流程Receive from queue (auto complete) -> Get Blob Content -> Update Blob (append)存在竞态条件,这是高并发下丢消息的核心原因:

  • 多个Logic App实例会同时执行Get Blob Content,拿到的是同一版本的Blob内容
  • 后续每个实例基于自己获取到的旧内容执行Update Blob (append),会覆盖其他实例刚刚写入的内容,最终导致部分消息丢失
  • 调整Concurrency Control无法解决这个问题,因为控制的是Logic App的并发实例数,但只要有多个实例同时处理并执行这套读写分离的操作,冲突就无法避免

正确的实现方式

直接使用Append to blob动作(而非先Get再Update),跳过Get Blob Content步骤:

  • 将Service Bus消息的内容直接作为追加内容传入Append to blob动作
  • Azure Append Blob的追加操作是原子性的,存储服务会自动处理并发请求,确保每个消息内容都被追加到Blob末尾,不会出现覆盖或丢失的情况
  • 流程简化为:Receive from queue (auto complete) -> Append to blob

测试并发实例写入的方法

  • 记录Logic App实例ID:在流程中添加Log to Azure Monitor步骤,每次处理消息时记录当前实例的ID(可通过@workflow().run.id获取),查看日志就能知道是否有多个实例同时写入同一个Blob
  • 查看存储账户事务日志:在Azure门户的存储账户中,进入“监控”->“日志”,筛选AppendBlob类型的操作,查看操作的请求ID、时间和发起方,判断是否存在并发写入
  • 检查Blob属性:使用Azure Storage Explorer打开目标Blob,查看“属性”中的“最近修改时间”和“块列表”,如果有多个块在极短时间内被添加,说明存在并发写入操作

内容的提问来源于stack exchange,提问作者Damo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:40:01