Kafka提供了监视当前偏移量和最新偏移量的功能。同样,azure eventhub是否公开任何api来连续监视分区的当前偏移量和最新可用偏移量?
答案 0 :(得分:1)
看Features and terminology in Azure Event Hubs - Event consumers - Stream offsets:
偏移量是事件在分区内的位置。您可以将偏移量视为客户端游标。偏移量是事件的字节编号。此偏移量使事件使用者(阅读器)可以在事件流中指定要从其开始读取事件的点。您可以将偏移量指定为时间戳或偏移量值。 消费者负责在Event Hubs服务之外存储自己的偏移量值。在分区内,每个事件都包含一个偏移量。
以及常见的消费者任务下-读取事件:
将事件发送到客户端时,每个事件数据实例都包含重要的元数据,例如 offset 和序列号,这些元数据用于简化事件序列的检查点。
似乎没有任何可用于监视偏移量的方法,因为您需要自己执行此操作。
答案 1 :(得分:1)
扩展上面的答案,您可以看到两种偏移方式。
例如使用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分钟,我们将从Eventhub中获取 LastEnqueuedSequenceNumber ,并从Blob存储(检查点位置)获取每个分区的 SequenceNumber ,然后将差异存储在ApplicationInsight customMetrics中。
然后,ApplicationInsights帮助我们在Azure仪表板中固定Eventhub深度信息并设置警报。
我希望这会有所帮助!