首页 > 解决方案 > 在多区域 Azure Cosmos DB 中更改源读取区域

问题描述

我正在使用 Cosmos DB 多区域(单区域写入)帐户。目前它在美国东部和美国西部启用。写入区域是美国西部。更改提要侦听器部署在美国东部和美国西部。

鉴于此设置,我想了解更改提要如何工作?

  1. 更改提要侦听器是否从部署它们的区域接收更改提要。示例 - 东方的听众从东方阅读,西方的听众从西方阅读。

或者

  1. 它们从写入区域读取。就我而言,美国西部。

我正在使用更改提要处理器库来读取更改提要,代码是:

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;

标签: azure-cosmosdbazure-cosmosdb-sqlapi

解决方案


默认情况下,将从写入区域(美国西部)读取更改。如果您想从另一个区域读取更改,您可以像这样简单地使用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
};

推荐阅读