监视Azure事件中心派生队列大小的可用方法

时间:2018-12-21 11:10:55

标签: azure azure-eventhub

Kafka提供了监视当前偏移量和最新偏移量的功能。同样,azure eventhub是否公开任何api来连续监视分区的当前偏移量和最新可用偏移量?

2 个答案:

答案 0 :(得分:1)

Features and terminology in Azure Event Hubs - Event consumers - Stream offsets

  

偏移量是事件在分区内的位置。您可以将偏移量视为客户端游标。偏移量是事件的字节编号。此偏移量使事件使用者(阅读器)可以在事件流中指定要从其开始读取事件的点。您可以将偏移量指定为时间戳或偏移量值。 消费者负责在Event Hubs服务之外存储自己的偏移量值。在分区内,每个事件都包含一个偏移量。

以及常见的消费者任务下-读取事件

  

将事件发送到客户端时,每个事件数据实例都包含重要的元数据,例如 offset 和序列号,这些元数据用于简化事件序列的检查点。

似乎没有任何可用于监视偏移量的方法,因为您需要自己执行此操作。

答案 1 :(得分:1)

扩展上面的答案,您可以看到两种偏移方式。

  1. 在正在监听EventHub的日志文件中打印偏移量

例如使用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}");
    }
  1. 我正在通过Azure Functions监听Eventhub,您可以在下面看到Azure函数保持分区偏移的位置。

From Portal

选项3(最新)

偏移量不是衡量Eventhub深度的正确方法,特别是当您要检查需要处理多少消息时。

现在,我们使用Eventhub消息SequenceNumber代替Offset。我们已经创建了TimerTrigger Azure函数。每隔5分钟,我们将从Eventhub中获取 LastEnqueuedSequenceNumber ,并从Blob存储(检查点位置)获取每个分区的 SequenceNumber ,然后将差异存储在ApplicationInsight customMetrics中。

然后,ApplicationInsights帮助我们在Azure仪表板中固定Eventhub深度信息并设置警报。

Eventhub Depth in Azure Dashboard

Timer Trigger Code

我希望这会有所帮助!