gpt4 book ai didi

Azure 事件处理器主机 java 库 - ReceiverRuntimeInformation 在分区上没有实际统计信息

转载 作者:行者123 更新时间:2023-12-02 06:20:06 27 4
gpt4 key购买 nike

我试图通过在接收到事件时利用 PartitionContext 提供的 ReceiverRuntimeInformation 对象来获取最后一个排队序列号,以跟踪消费者端的消费者和生产者之间的滞后。但是,ReceiverRuntimeInformation 对象没有与事件中心的特定分区相关的更新值,它返回 0。示例代码和日志输出如下:

public class EventProcessor extends IEventProcessorImpl{

@Override
public void onEvents(PartitionContext context, Iterable<EventData> messages) throws Exception {
ReceiverRuntimeInformation rte = context.getRuntimeInformation();
logger.info(rte.getLastEnqueuedOffset() + " * " + rte.getLastEnqueuedSequenceNumber() + " * " + rte.getPartitionId() + " * " + rte.getRetrievalTime());
}

}

输出:

null * 0 * 3 * null

最佳答案

这是一项选择性加入功能。创建 EventProcessorHost 实例时,传入 EventProcessorOptions :

eventProcessorOptions.setReceiverRuntimeMetricEnabled(true);

我们将其设计为Opt-in 功能 - 因为它会向收到的所有 EventHub 消息添加额外的字节(sdk 使用客户端在线路上接收的所有 EventData - 来传输此信息额外信息)。

注意:RecieverRuntimeInformation 中存在的数据是动态,因此可能陈旧!例如 - ReceiverRuntimeInformation.LastEnqueuedSequenceNumber 可能会在服务实际响应时发生变化!因为该分区上可能有新事件。为了使数据相关 - 我们添加了一个名为 - RetrievalTime 的属性 - 这实际上是从服务检索 ReceiverRuntimeInformation 的时间。这可以帮助理解 - ReceiverRuntimeInformation 的值有多陈旧。

关于Azure 事件处理器主机 java 库 - ReceiverRuntimeInformation 在分区上没有实际统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51823399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com