我们有一个带有Cosmos DB触发器的Azure功能,该触发器需要按顺序而不是按任何特定顺序处理分区中的项目。我的理解是,触发器将始终一次将一个分区的所有更改发送到一个函数实例。但是,我看到在几秒钟内多个功能实例正在处理一个分区的更改。因此,更改馈送给函数实例的分配无法正常工作。
此功能应用程序在最新的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
}
我希望给定时间对给定分区的所有更改都将转到一个函数实例,但有时它们会转到多个功能实例。
答案 0 :(得分:0)
我找不到任何有关该发行版实际工作方式的文档,您有资料来源吗?
您的租赁物集合是否有docs中提到的/id
分区?
租用容器:租用容器在多个和动态的无服务器Azure函数实例之间维护状态并启用动态缩放。该租用容器可以由Azure Cosmos DB触发器手动或自动创建。要自动创建租用容器,请在配置中设置CreateLeaseCollectionIfNotExists标志。 已分区的租用容器必须具有/ id分区键定义。