Azure Cosmos ChangeFeed Processor多实例负载无法分发问题咨询
Azure Cosmos ChangeFeed Processor多实例负载无法分发问题咨询
我现在在使用Java服务基于Azure Cosmos ChangeFeed Processor处理所有变更事件,尝试启动多个服务实例,期望负载能在实例间分发,但目前所有消息都只被一个实例消费。
我的ChangeFeed Processor代码如下:
ChangeFeedProcessorOptions cfOptions = new ChangeFeedProcessorOptions(); cfOptions.setFeedPollDelay(Duration.ofSeconds(1)); cfOptions.setStartFromBeginning(false); ChangeFeedProcessor changeFeedProcessorInstance = new ChangeFeedProcessorBuilder() .options(cfOptions) .hostName(hostName)//hostname is unique for each instance .leaseContainer(leaseContainer) .feedContainer(feedContainer) .handleChanges( documents -> documents.forEach(changeFeedProcessor::handleReceivedFeed)) .buildChangeFeedProcessor(); changeFeedProcessorInstance .start() .subscribeOn(Schedulers.fromExecutor(Executors.newFixedThreadPool(CDC_MAX_THREADS))) .subscribe();
我的Azure Cosmos Maven依赖配置:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-cosmos</artifactId> <version>4.63.2</version> </dependency>
被监控容器的分区情况:我有1个物理分区,大约300K个逻辑分区,这个数据是通过以下SQL查询计算得到的:
SELECT COUNT(1) FROM (SELECT distinct c.partitionKey FROM c) AS t
我猜测当前只有一个实例获取了租约,想请教如何配置才能确保每个实例都能至少获取到一个租约,实现负载的合理分发。
备注:内容来源于stack exchange,提问作者Ryuzaki
相关产品推荐
相关产品推荐

