CosmosDB V3 配置ChangeFeedProcessor ChangeFeedOptions为使用分区密钥。

问题描述 投票:0回答:1

当使用高级的ChangeFeedProcessor时,是否不能设置ChangeFeedOptions(特别是PartitionKey和lease-prefix)? 那个库是不是太高级了?我用的是V3 Cosmos。 网上所有的例子都显示了V2的低级设置方式。这里是V3 ProcessorBuilder...。 我需要一个.options或.WithPartitionKey等。

 ChangeFeedProcessor changeFeedProcessor = cosmosClient.GetContainer("myDB", "myContainer")
            .GetChangeFeedProcessorBuilder<myData>("changeFeedTest", HandleChangesAsync)
                .WithPollInterval(new TimeSpan(0, 0, 1))   
                .WithInstanceName("Host1" )
                .WithLeaseContainer(leaseContainer)
                .Build();

也许一个具体的例子会有帮助。

比如说你有一个国际象棋游戏. 棋手的棋步被发送到CosmosDB的PlayerActions容器中。 该棋局的所有棋手和旁观者都会订阅变化源。 工作很好,但是在规模上呢?当你有10,000个游戏在运行时,你不希望每个客户端都得到比他们应该得到的多10,000倍的通知。 只是他们感兴趣的游戏ID(PartitionKey)的那些。我几乎可以肯定,没有人会建议我每个游戏有1个容器,所以我需要过滤变化的feed。 我宁愿使用V3处理器库,但我可能需要使用更低级别的API。 在我做额外的工作之前,有谁有任何提示?

这里有另一种方法来问这个问题。 在这里的docs中的例子。https:/docs.microsoft.comen-usazurecosmos-dbchange-feed-processor。它们显示A-E城市进入一个主机处理器,但似乎没有API了,用GetChangeFeedProcessorBuilder来设置。

azure-cosmosdb feed
1个回答
0
投票

Changefeedprocessor(推送模型)确实不支持分区键(如下文文档链接中所指出的),答案是在3.9.0预览中的一个新的 "changefeed pull model "功能(仍然)。今天发布)。但在早期的3.9.0-preview3中。 它是否有效,我还不能评论。

https:/docs.microsoft.comen-usazurecosmos-dbchange-feed-pull-model)。

所以,你必须自己投票喂养和维护延续的代币。

© www.soinside.com 2019 - 2024. All rights reserved.