问题描述

通过Service Bus Explorer工具,查看到Event Hub的属性值,从而产生的问题及讨论:

  1. Size in Bytes:   这个是表示当前分区可以存储的最大字节数吗?
  2. LastEnqueuedOffset:   这个是表示是最后一条消息在这个分区上的字节偏移量吗?
  3. Incoming / OutgoingBytesPerSecond:   这两个值是0,是按照多长的时间跨度算的这个值?
  4. Begin Sequence Number:  这个是在这个消费者组的视角下未被消费的消息的起始消息号吗?
  5. End Sequence Number:   这个是在这个消费者组的视角下未被消费的消息的结束消息号?
  6. 如果Event Hub下有两个消费者组,一个Default,一个是自建的,两个消费者组看到的内容是一样的吗?

问题回答

Size in Bytes:   这个是表示当前分区可以存储的最大字节数吗?

【答】:Size in Bytes是指事件分区的大小

LastEnqueuedOffset:   这个是表示是最后一条消息在这个分区上的字节偏移量吗?

【答】:LastEnqueuedOffset 是指最后一个进入队列的事件的偏移量

Incoming / OutgoingBytesPerSecond:   这两个值是0,是按照多长的时间跨度算的这个值?

【答】:Incoming / OutgoingBytesPerSecond是指此使用者组中分区的事件的大致传入/传出速率(非100%精确,仅供参照)

Begin Sequence Number:  这个是在这个消费者组的视角下未被消费的消息的起始消息号吗?

【答】:Begin Sequence Number分区数据中开始获取的第一个事件的序列号(因为Event Hub中的数据会过期清理,所以里面会不会永久保存),所以该值也表示当前分区中现存事件的第一条消息序列号。

End Sequence Number:   这个是在这个消费者组的视角下未被消费的消息的结束消息号?

【答】: End Sequence Number分区数据中开始获取的最后一个事件的序列号就是结束序列号,所以该值也表示当前分区中现存事件中最后一条消息的序列号。

注:End Sequence Number - Begin Sequence Number =  Total Message

如果Event Hub下有两个消费者组,一个Default,一个是自建的,两个消费者组看到的内容是一样的吗?

【答】:多个消费组所消费的EventHub数据是一样的。

衍生问题:

1) 在代码中设置了消费者组的 Checkpoint 保存位置,官方文档说EventHub的 Checkpoint  不保存在 Broker (服务端)上,由客户端指定保存位置。那是不是如果用多个客户端使用同一个消费者组消费,但是每个客户端设置的checkpoint存储位置都不一样,那么每个客户端都能成功消费到事件,但是实际还是各自消费,消费的事件是重复的?

【答】:是的,消费者组都是分别处理的,消费的事件是重复的。

2)消费端消费的时候,有一个start-position,可以取值EARLIEST和LATEST,如果消费端已经有了 Checkpoint  ,这个start-position具体时什么时候起作用?

start-position:Whether the consumer receives messages from the beginning or end of event hub. if EARLIEST, from beginning. If LATEST, from end. Default: LATEST

【答】:Checkpoint  存储在 Storage Account中。它的目的是:如果读取者与分区断开连接,当它重新连接时,将开始读取前面由该使用者组中该分区的最后一个读取者提交的检查点(Checkpoint), 它会将此偏移量传递给事件中心,以指定要从其开始读取数据的位置。

start-position 连接分区进行消费时候,开始使用使用这个参数,如果设置为EARLIEST,就从start-position这个位置往前读,设置为LATEST就从start-position这个位置往后读。

Checkpoint  和 start-position 有个互斥关系,如果配了其中的某一个,另一个会被忽略。即

  • 如果没有分区的checkpoint值,则从该事件位置开始接收也就是从start-position开始。
  • 如果有,将使用checkpoint值开始再次消费事件。

参考资料:

Event Hub Consumer Properties:https://docs.microsoft.com/en-us/java/api/overview/azure/spring-cloud-stream-binder-eventhubs-readme?view=azure-java-stable#event-hub-consumer-properties

【Azure 事件中心】在Service Bus Explorer工具种查看到EventHub数据在分区中的各种属性问题的更多相关文章

  1. 【Azure 事件中心】Azure Event Hub 新功能尝试 -- 异地灾难恢复 (Geo-Disaster Recovery)

    问题描述 关于Event Hub(事件中心)的灾备方案,大多数就是新建另外一个备用的Event Hub,当主Event Hub出现不可用的情况时,就需要切换到备Event Hub上. 而在切换的过程中 ...

  2. 【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心

    问题描述 在Application Gateway中,开启WAF(Web application firewall)后,现在需要把访问的日志输出到第三方分析代码中进行分析,如何来获取WAF的诊断日志呢 ...

  3. 【Azure 事件中心】Event Hub 无法连接,出现 Did not observe any item or terminal signal within 60000ms in 'flatMapMany' 的错误消息

    问题描述 使用Java SDK连接Azure Event Hub,一直出现 java.util.concurrent.TimeoutException 异常, 消息为:java.util.concur ...

  4. 【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)

    问题描述 事件中心提供 Kafka 终结点,现有的基于 Kafka 的应用程序可将该终结点用作运行你自己的 Kafka 群集的替代方案. 事件中心可与许多现有 Kafka 应用程序配合使用.在Azur ...

  5. 【Azure 事件中心】EPH (EventProcessorHost) 消费端观察到多次Shutdown,LeaseLost的error信息,这是什么情况呢?

    问题详情 使用EPH获取Event Hub数据时,多次出现连接shutdown和LeaseLost的error  ,截取某一次的error log如: Time:2021-03-10 08:43:48 ...

  6. 【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position

    问题描述 当使用SDK连接到Azure Event Hub时,最常规的方式为使用连接字符串.这种做法参考官网文档就可成功完成代码:https://docs.azure.cn/zh-cn/event-h ...

  7. 【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存

    问题描述 在使用Azure Event Hub的SDK时候,常规情况下,发现示例代码中并没有SDK内部的日志输出.因为在Java项目中,没有添加 SLF4J 依赖,已致于在启动时候有如下提示: SLF ...

  8. 【Azure 事件中心】azure-spring-cloud-stream-binder-eventhubs客户端组件问题, 实践消息非顺序可达

    问题描述 查阅了Azure的官方文档( 将事件发送到特定分区: https://docs.azure.cn/zh-cn/event-hubs/event-hubs-availability-and-c ...

  9. 【Azure 服务总线】详解Azure Service Bus SDK中接收消息时设置的maxConcurrentCalls,prefetchCount参数

    (Azure Service Bus服务总线的两大类消息处理方式: 队列Queue和主题Topic) 问题描述 使用Service Bus作为企业消息代理,当有大量的数据堆积再Queue或Topic中 ...

随机推荐

  1. Duplicate entry '' for key 'PRIMARY'

    今天在在mysql中插入数据 因为直接插入查询出来的表格,insert into 表(student_id,class_id) 直接插入了这两个字段对应的查询出来的表 没有留意到该表的主键没有设置自增 ...

  2. Map 实现类之一:HashMap

    Map 实现类之一:HashMapHashMap是 Map 接口 使用频率最高的实现类.允许使用null键和null值,与HashSet一样,不保证映射的顺序.所有的key构成的集合是Set:无 ...

  3. du -cs /var/lib/BackupPC/pc/10.1.60.211/目录名

    # du -cs /var/lib/BackupPC/pc/10.1.60.211/7870236 /var/lib/BackupPC/pc/10.1.60.211/7870236 总用量  

  4. cron 任务的典型格式是: 分钟(0-59) 小时(0-24) 日(1-31) 月(1-12) 星期(0-6) 要执行的命令

    https://linux.cn/article-9687-1.html Cron 是您可以在任何类 Unix 操作系统中找到的最有用的实用程序之一.它用于安排命令在特定时间执行.这些预定的命令或任务 ...

  5. 042.Python进程队列介绍

    进程队列介绍 1  基本语法及过程 先进先出,后进后出,q = Queue() 过程 (1)把数据放到q队列中 put (2)把书局从队列中拿出来 get from multiprocessing i ...

  6. IT菜鸟之总结(Du teacher)

    初次接触云计算,从以前对计算机的一窍不通,经过这三周的学习,起码是通了一窍了:哈哈,至少是对计算机的组成及系统的安装都有了认识,也初次学习了Linux系统,对其的发展和使用有了认识,也学到了一些基础的 ...

  7. Linux shell用sed批量更改文件名的相关内容

    示例 去除特定字符 目标:将指定目录下文件名中sprint替换为dev 方法: [root@Skip-ftp test]# for i in `ls` > do > name=`echo ...

  8. GO学习-(31) Go语言操作Elasticsearch

    Elasticsearch 本文简单介绍了ES.Kibana和Go语言操作ES. Elasticsearch 介绍 Elasticsearch(ES)是一个基于Lucene构建的开源.分布式.REST ...

  9. GO学习-(2) 从零开始搭建Go语言开发环境

    从零开始搭建Go语言开发环境 一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站( ...

  10. AutomicBoolean

    AutomicBoolean 介绍 java并发包下提供的原子变量,是原子类其中之一.基本特性是在多线程环境下,多个线程同时执行这些类的实例包含的方法时,具有排他性 当某个线程进入方法,不会被其他线程 ...