Cosmos Db Change Feed не дает желаемого результата

Я пытаюсь получить все изменения из моей отслеживаемой базы данных в ленте изменений базы данных Cosmos, следуя приведенным ниже кодам. Я пытаюсь использовать разную продолжительность, например, изменения, происходящие сегодня, или изменения, произошедшие за последние 7 дней, или изменения, произошедшие в целом. Теперь во всех случаях я получаю все изменения в первый раз и никаких изменений во втором прогоне, если не произойдет изменений. Я хотел бы знать, что я здесь делаю не так, и если мне нужно получать изменения только за последнюю неделю при каждом запуске, как мне настроить ленту изменений, если мой приведенный ниже код неверен. Заранее спасибо

 private static CosmosClient Client { get; set; }
    static void Main(string[] args)
    {
        Task.Run(async () =>
        {
            Client = new CosmosClient("AccountEndpoint = https://test.documents.azure.com:443/;AccountKey=FW5yvDA==;");
            var database = Client.GetDatabase("twstDatabase");
            var container = database.GetContainer("TestContainer");
            var leaseContainer = database.GetContainer("leases");

            var cfp = container.GetChangeFeedProcessorBuilder<dynamic>("cfpLibraryDThird", ProcessChanges)
                .WithLeaseContainer(leaseContainer)
                .WithInstanceName("Change Feed Instance Demo") 
// I change the instance name for different start time
                    .WithStartTime(DateTime.Today.AddDays(-7).ToUniversalTime())
                    //.WithStartTime(DateTime.MinValue.ToUniversalTime())
                    .Build();
                await cfp.StartAsync();
                Console.WriteLine("Started Change feed processor- press key to stop");
                Console.ReadKey(true);
                await cfp.StopAsync();
            }).Wait();
        }

        static async Task ProcessChanges(IReadOnlyCollection<dynamic> docs, CancellationToken cancellationToken)
        {
            foreach (var doc in docs)
            {
                Console.WriteLine($"Document {doc.id} has changed");
                
            }
        }
    }
}

person Community    schedule 01.12.2020    source источник


Ответы (2)


Это было исправлено на 3.15.1. Я обновил пакет, и проблема решена.

person Vasyl Tserpiak    schedule 28.12.2020

Это ошибка версии 3.15, вы можете отследить ее здесь https://github.com/Azure/azure-cosmos-dotnet-v3/issues/2031.

person Steve Zhao    schedule 02.12.2020
comment
Но мой вопрос: а что, если я НЕ ХОЧУ ОБРАБАТЫВАТЬ ВСЕ ИЗМЕНЕНИЯ и обрабатывать только те изменения, которые произошли за последние 7 дней. Я указываю значение WithStartTime, но все равно получаю все изменения при первом запуске - person ; 02.12.2020
comment
Итак, я создал новый контейнер, дал для него Id как Lease Container в приведенном выше коде и установил для Time значение (DateTime.Today.AddDays (-7) .ToUniversalTime ()), но все документы я получаю из моей контролируемой базы данных. Вы пробовали это со своей стороны? - person ; 02.12.2020