将实体插入多个Azure表存储分区(相同的表),并知道哪些插入失败(如果有)

时间:2011-01-27 23:57:40

标签: azure-storage azure-table-storage azure-worker-roles

我设置了Azure辅助角色,以便从一些外部Web服务获取信息,将其解析为几种不同的实体类型,并将这些实体存储在Azure表存储中。至关重要的是,大多数(如果不是全部)这些实体都插入到表中的自己的分区中。

我正在使用TableServiceContext扩展类,调用AddObject(EntityToBeInserted)以在创建时将新实体附加到tableservicecontext。目前,我随后调用TableServiceContext.SaveChangesWithRetries(SaveChangesOptions.None)将这些实体保存到各自分区中的表中。一切正常。

我的问题是:当它不能正常工作时会发生什么?我可以通过使它们的行和分区键不唯一来导致1 +以上的实体不被保存,但是我抓住该行为的错误消息并不表示哪个实体失败,只是出现了错误其中之一。

如何将实体从工作者角色保存到表存储,其中每个实体都转到其自己的分区(假设在其中一个保存调用中插入了2-30个实体),因此如果这些插入中的一个或多个失败我至少可以知道它是哪一个?这些操作对时间非常敏感,因此我不能依赖长时间运行的重试选项来等待相关存储节点再次可用。

谢谢你, 亚历

1 个答案:

答案 0 :(得分:0)

答案是您不能跨表存储分区进行批量插入,因此您应该跟踪所插入实体的ID(partitionkey和rowkey),并验证它们在异步表存储插入调用的回调中是否成功。