IReliableReadWriteDocumentClient在文档DB中缺少分区解析器

本文关键字:分区 文档 DB IReliableReadWriteDocumentClient | 更新日期: 2023-09-27 18:09:52

当返回DocumentClient AsReliable时,它没有PartitionResolvers。有办法绕过这个吗?

var documentClient = new DocumentClient(new Uri(endPointUrl), authorizationKey);
var documentRetryStrategy = new DocumentDbRetryStrategy(RetryStrategy.DefaultExponential) { FastFirstRetry = true };
return documentClient.AsReliable(documentRetryStrategy);

IReliableReadWriteDocumentClient在文档DB中缺少分区解析器

您从.AsReliable(..)获得的IReliableReadWriteDocumentClient实现只是原始DocumentClient的包装,它通过使用提供的重试策略在重试块中执行原始(底层)客户机的每个方法。没有魔法。内置的DocumentDbRetryStrategy旨在消除大多数瞬时网络/服务/节流问题。

回答您最初的问题-您可以在原始客户端上设置PartitionResolvers,然后用.AsReliable(..)包装它,或者您可以稍后通过UnderlyingClient属性访问集合。UnderlyingClient属性持有传递给.AsReliable(..)扩展方法的相同实例。

关于使用DocumentClientIReliableReadWriteDocumentClient的最佳实践:如果你需要在客户端和服务器之间有更可靠的通信,这将自动重试上面描述的瞬态故障-那么你应该考虑使用.AsReliable(..)。如果您的场景不需要将所有文档持久化在存储中(例如,在日志记录/跟踪的情况下),并且您将"吞下"所有异常—那么直接使用DocumentClient来减少额外重试所花费的时间并没有什么错。

您可以访问底层的DocumentClient对象来注册PartitionResolvers。