Изменить регион чтения канала в мультирегиональной базе данных Azure Cosmos - PullRequest
1 голос
/ 27 апреля 2019

Я использую многорегиональную учетную запись в базе данных Cosmos DB. В настоящее время он включен в восточной и западной частях США. Регион записи - Запад США. Слушатели ленты изменений развернуты как в восточной части США, так и в западной части США.

Учитывая эту настройку, я хотел понять, как работает канал изменений?

  1. Получают ли получатели изменений ленту изменений из региона, в котором они развернуты. Пример: слушатели на Востоке читают с Востока, а слушатели на Западе читают с Запада.

OR

  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;

1 Ответ

0 голосов
/ 29 апреля 2019

По умолчанию изменения будут считываться из региона записи (запад США).Если вы хотите, чтобы изменения считывались из другого региона, вы можете просто использовать настройку 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
};
...