azure-cosmosdb - 在多区域 Azure Cosmos DB 中更改源读取区域
问题描述
我正在使用 Cosmos DB 多区域(单区域写入)帐户。目前它在美国东部和美国西部启用。写入区域是美国西部。更改提要侦听器部署在美国东部和美国西部。
鉴于此设置,我想了解更改提要如何工作?
- 更改提要侦听器是否从部署它们的区域接收更改提要。示例 - 东方的听众从东方阅读,西方的听众从西方阅读。
或者
- 它们从写入区域读取。就我而言,美国西部。
我正在使用更改提要处理器库来读取更改提要,代码是:
var feedCollection = new DocumentCollectionInfo()
{
DatabaseName = configurations.CosmosDb.DatabaseId,
CollectionName = configurations.CosmosDb.CollectionId,
Uri = new Uri(configurations.CosmosDb.EndpointUri),
MasterKey = configurations.CosmosDb.AuthKey
};
var leaseCollection = new DocumentCollectionInfo()
{
DatabaseName = configurations.LeaseCollection.DatabaseId,
CollectionName = configurations.LeaseCollection.CollectionId,
Uri = new Uri(configurations.CosmosDb.EndpointUri),
MasterKey = configurations.CosmosDb.AuthKey
};
var builder = new ChangeFeedProcessorBuilder();
var processor = builder
.WithHostName(hostName)
.WithFeedCollection(feedCollection)
.WithLeaseCollection(leaseCollection)
.WithObserverFactory(observerFactory)
.BuildAsync().Result;
解决方案
默认情况下,将从写入区域(美国西部)读取更改。如果您想从另一个区域读取更改,您可以像这样简单地使用ConnectionPolicy
设置DocumentCollectionInfo
:
ConnectionPolicy regionalPolicy = new ConnectionPolicy();
regionalPolicy.PreferredLocations.Add("East US");
var feedCollection = new DocumentCollectionInfo()
{
DatabaseName = configurations.CosmosDb.DatabaseId,
CollectionName = configurations.CosmosDb.CollectionId,
Uri = new Uri(configurations.CosmosDb.EndpointUri),
MasterKey = configurations.CosmosDb.AuthKey,
ConnectionPolicy = regionalPolicy
};
推荐阅读
- mips - Mips:返回错误的退货地址
- azure - Azure Kubernetes LoadBalancer 将请求转发到所有实例
- plot - Vega-Lite - 是否可以为两个不同的地块使用相同的选择器?
- matplotlib - 有没有办法将 matplotlib 动画保存为视频(使用 ffmpeg),以便最后一帧保持 N 秒?
- scala - 如何缩小 ZIO Schedule 环境?
- firebase - 从颤振中获取单个文档集合
- node.js - 使用 projects.locations.functions.setIamPolicy 对函数设置 IAM 策略会出现错误
- java - 计算快速排序中的比较
- rdf - 是否有一个简单的 SPARQL 构造查询来通过某个谓词值选择所有与主题相关的语句
- c# - C# Entity Framework 6 Code First:如何为存储在 DB 中的属性定义特定的设置器