Azure 事件处理器主机 java 库 - ReceiverRuntimeInformation 在分区上没有实际统计信息
Azure Event Processor Host java library - ReceiverRuntimeInformation doesn't have actual stats on a partition
我正在尝试获取最后一个排队的序列号,以在接收到事件时利用 PartitionContext 提供的 ReceiverRuntimeInformation 对象来跟踪消费者端的消费者和生产者之间的滞后。但是,ReceiverRuntimeInformation 对象没有与事件中心的特定分区相关的更新值,它 returns 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
中的数据是dynamic
,因此可以是stale
!例如 - ReceiverRuntimeInformation.LastEnqueuedSequenceNumber
可能会在服务实际响应时发生变化!因为该分区上可能有新的事件。为了使数据相关 - 我们添加了一个名为 属性 - RetrievalTime
- 实际上是从服务中检索 ReceiverRuntimeInformation
的时间。这有助于理解 - ReceiverRuntimeInformation
的值有多陈旧。
我正在尝试获取最后一个排队的序列号,以在接收到事件时利用 PartitionContext 提供的 ReceiverRuntimeInformation 对象来跟踪消费者端的消费者和生产者之间的滞后。但是,ReceiverRuntimeInformation 对象没有与事件中心的特定分区相关的更新值,它 returns 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
中的数据是dynamic
,因此可以是stale
!例如 - ReceiverRuntimeInformation.LastEnqueuedSequenceNumber
可能会在服务实际响应时发生变化!因为该分区上可能有新的事件。为了使数据相关 - 我们添加了一个名为 属性 - RetrievalTime
- 实际上是从服务中检索 ReceiverRuntimeInformation
的时间。这有助于理解 - ReceiverRuntimeInformation
的值有多陈旧。