目前我有以下流程:
- 外部申请
- 创建输入数据并将其写入Azure Blob文件
- 在Azure存储队列中用元数据写消息,
- AppLogic已挂接到队列并使用worker启动容器的新实例,
- 新的ACI容器实例从Azure Blob文件复制输入文件,对其进行处理(主要使用ImageMagick),将输出文件保存在Azure Blob文件中,
然后关闭自己。
它可以正常工作,但是现在我想防止流重复。
我的第一个想法是将队列更改为可以检查密钥唯一性的Azure Service Bus。然后我开始考虑是否应该更改顺序并首先将消息添加到队列中,然后(如果不是重复的话)写blob?但是在紧固脚本启动容器的情况下,因为跟踪队列为时过早。也许我应该使用Azure Blob文件创建触发器(Microsoft.Storage.BlobCreated是否合适)?但是,为什么在这种情况下完全使用队列呢?也许Blob表存储会更好,我错了吗?
最终流量:
- 外部申请
- 使用元数据在Azure存储表中写入消息,
- 创建输入数据并将其写入Azure Blob文件
- AppLogic跟踪Microsoft.Storage.BlobCreated,从Azure存储表中读取元数据,并使用worker启动容器的新实例,
- 没有变化。
是否合适?还是更好的解决方案?