2

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

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

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

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

谢谢你,亚历克斯

4

1 回答 1

0

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

于 2011-09-15T20:12:25.910 回答