#azure-cosmosdb #azure-cosmosdb-changefeed
#azure-cosmosdb #azure-cosmosdb-changefeed
Вопрос:
Я пытаюсь получить все изменения из моей отслеживаемой базы данных в ленте изменений Cosmos db, следуя приведенным ниже кодам. Я пытаюсь изменить продолжительность, например, изменения, происходящие сегодня, или изменения, произошедшие за последние 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");
}
}
}
}
Ответ №1:
Это было исправлено в 3.15.1. Я обновил пакет, и он устраняет проблему.
Ответ №2:
Это ошибка с 3.15, вы можете отследить это здесь https://github.com/Azure/azure-cosmos-dotnet-v3/issues/2031 .
Комментарии:
1. Но мой вопрос в том, что, если я НЕ ХОЧУ ОБРАБАТЫВАТЬ ВСЕ ИЗМЕНЕНИЯ и обрабатывать только те изменения, которые произошли за последние 7 дней. Я предоставляю значение WithStartTime, но я все равно получаю все изменения при первом запуске
2. Итак, я создал новый контейнер, присвоил ему идентификатор в качестве контейнера для аренды в моем приведенном выше коде и установил время равным (DateTime. Сегодня. Добавить дней (-7). ToUniversalTime ()) тем не менее, я получаю все документы из моей отслеживаемой базы данных. Вы пробовали это с вашей стороны?