在旧的 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”。
似乎
ChangeFeedProcessorBuilderImpl
不是公共表面区域,而是内部实现。
我没有看到任何示例或文档提到使用
xxxxxImpl
,并且似乎是内部的,如果更改这些内容,则不会违反合同,因为它们是公共表面 API 的内部实现。
如果您的要求是获得 RU 费用,我会将此要求发布在 Java SDK 存储库上:https://github.com/Azure/azure-sdk-for-java/issues,以便团队可以跟踪此要求并确保它得到解决。