Kafka提供监控当前偏移和最新偏移的功能。类似地,azure eventhub会暴露任何api来连续监视分区的当前偏移量和最新的可用偏移量吗?
看看Features and terminology in Azure Event Hubs - Event consumers - Stream offsets:
偏移量是分区内事件的位置。您可以将偏移视为客户端游标。偏移量是事件的字节编号。此偏移使事件使用者(读者)能够指定他们想要从中开始读取事件的事件流中的点。您可以将偏移指定为时间戳或偏移值。消费者负责在Event Hubs服务之外存储他们自己的偏移值。在分区内,每个事件都包含一个偏移量。
在常见的消费者任务下 - 阅读事件:
当事件被发送到客户端时,每个事件数据实例包含重要的元数据,例如用于促进事件序列上的检查点的偏移和序列号。
似乎没有任何方法可用于监控偏移量,因为您需要自己执行此操作。
扩展到上面的答案,您可以通过2种方式看到偏移。
例如使用Azure功能
public static async Task Run([EventHubTrigger("EventHubname", ConsumerGroup = "ConsumerGroupname", Connection = "EventHubConnection")]EventData eventMessage,
[Inject]IService service, [Inject]ILog log)
{
log.Info($"PartitionKey {eventMessage.PartitionKey}, Offset {eventMessage.Offset} and SequenceNumber {eventMessage.SequenceNumber}");
}
选项3(最新)
偏移量不是测量Eventhub深度的正确方法,特别是当您想要检查需要处理的消息数时。
现在我们使用Eventhub消息SequenceNumber而不是Offset。我们创建了TimerTrigger Azure功能。每隔5分钟,我们从bloh存储(检查点位置)为每个分区从Eventhub和SequenceNumber获取LastEnqueuedSequenceNumber,然后我们在ApplicationInsight customMetrics中存储差异。
然后,ApplicationInsights帮助我们在Azure仪表板中输入PIN Eventhub深度信息并设置警报。
我希望这个能帮上忙!