CosmosSDK Java 4.52.0 changeFeedBuilder 不再支持 ChangeFeedObserver,如何获取“fetch”ChangeRequest?

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

在旧的 SDK 版本中,当创建 ChangeFeedProcessor 时,应提供 ChangeFeedObserver 实现。 ChangeFeedObserver 包含 ChangeFeedObserverContext,后者包含包含 requestCharge 的 FeedResponse。

有没有办法使用基于新的 Publisher 的 ChangeFeedProcessor 初始值设定项以某种方式获取 requestCharge?

编辑: 以前的代码(SDK 4.37.1):

return new ChangeFeedProcessorBuilderImpl()
    .options(cfOptions)
    .hostName(host)
    .feedContainer(feedInputContainer)
    .leaseContainer(leaseContainer)
    .observerFactory(() -> new CosmosStatisticsChangeFeedObserver(cosmosEventsProcessor, metrics))
    .build();

其中“CosmosStatisticsChangeFeedObserver”是 ChangeFeedObserver{JsonNode} 的实现

新实现(SDK 4.52.0):

return new ChangeFeedProcessorBuilder()
    .options(cfOptions)
    .hostName(host)
    .feedContainer(feedInputContainer)
    .leaseContainer(leaseContainer)
    .handleLatestVersionChanges(new CosmosChangeFeedChangeHandler(metrics, cosmosEventsProcessor))
    .buildChangeFeedProcessor();

其中“CosmosChangeFeedChangeHandler”是“Consumer{List{ChangeFeedProcessorItem}}”的实现。 (无法显示“<"s)

在新的基于消费者的changefeedhandler中,缺少“feedResponse”,因此我在接收提要项目时无法获得RequestCharge。仅存在不包含 RU 信息的“ChangeFeedProcessorItem”。

azure-cosmosdb azure-cosmosdb-sqlapi cosmos-sdk
1个回答
0
投票

似乎

ChangeFeedProcessorBuilderImpl
不是公共表面区域,而是内部实现。

我没有看到任何示例或文档提到使用

xxxxxImpl
,并且似乎是内部的,如果更改这些内容,则不会违反合同,因为它们是公共表面 API 的内部实现。

如果您的要求是获得 RU 费用,我会将此要求发布在 Java SDK 存储库上:https://github.com/Azure/azure-sdk-for-java/issues,以便团队可以跟踪此要求并确保它得到解决。

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