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);
您从.AsReliable(..)
获得的IReliableReadWriteDocumentClient
实现只是原始DocumentClient
的包装,它通过使用提供的重试策略在重试块中执行原始(底层)客户机的每个方法。没有魔法。内置的DocumentDbRetryStrategy
旨在消除大多数瞬时网络/服务/节流问题。
回答您最初的问题-您可以在原始客户端上设置PartitionResolvers
,然后用.AsReliable(..)
包装它,或者您可以稍后通过UnderlyingClient
属性访问集合。UnderlyingClient
属性持有传递给.AsReliable(..)
扩展方法的相同实例。
关于使用DocumentClient
和IReliableReadWriteDocumentClient
的最佳实践:如果你需要在客户端和服务器之间有更可靠的通信,这将自动重试上面描述的瞬态故障-那么你应该考虑使用.AsReliable(..)
。如果您的场景不需要将所有文档持久化在存储中(例如,在日志记录/跟踪的情况下),并且您将"吞下"所有异常—那么直接使用DocumentClient
来减少额外重试所花费的时间并没有什么错。
您可以访问底层的DocumentClient对象来注册PartitionResolvers。