У нас есть функция Azure с триггером Cosmos DB, который должен последовательно обрабатывать элементы внутри раздела, но не в каком-либо определенном порядке.Насколько я понимаю, триггер всегда будет посылать все изменения для раздела одному экземпляру функции за раз.Однако я вижу изменения для одного раздела, обрабатываемого несколькими экземплярами функций в течение нескольких секунд.Таким образом, изменение распределения каналов в экземплярах функций не работает так, как я ожидаю.
Это приложение-функция работает на последнем узле функции V2.Функция является долговременной функцией.Мы используем коллекцию 'аренды' с определенным префиксом для управления арендой для этого канала изменений.
[FunctionName("ProcessChanges")]
public static async Task RunAsync([CosmosDBTrigger(
databaseName: "MyDatabase",
collectionName: "MyCollection",
ConnectionStringSetting = "AzureWebJobsCosmosDBConnectionString",
LeaseCollectionName = "leases",
LeaseCollectionPrefix = "chgproc",
CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
[OrchestrationClient]DurableOrchestrationClient starter,
ILogger log)
{
// Processing code that calls the orchestrator function
}
Я ожидаю, что все изменения для данного раздела в данный момент времени перейдут в один экземпляр функции, но иногдаони идут к нескольким экземплярам функций.