1

当我编写一些代码来测试天蓝色服务总线上新发布的 EventHub 时。

由于网上的文章很少,msdn 也没有关于事件中心细节的丰富文档。所以我希望有人可以分享你对我的问题的经验。

对于 EventHub,我们有以下声明:

  • 我们使用“偏移量”来记住我们在从某个分区读取事件数据时的位置

  • EventHub 上的事件数据将在一些可配置的时间跨度后过期(自动?)

所以我的问题是,offset当一些事件数据由于过期而被删除时,它是否仍然可用/耐用?

例如,我们在其中一个分区上有以下数据:

M1 | M2 | M3 | M4  ( oldest --> latest )

在我的处理逻辑运行之后,假设我已经处理了M1and M2,所以偏移量将是M2(使用独占模式时)的开始。

一段时间后,如果我的服务在那段时间停止。M1由于过期而被删除。所以分区会变成:

M2 | M3 | M4 | M.... ( oldest -> latest )

在这种情况下,当我的服务器再次重新启动时,我之前存储的偏移量是否仍可用于读取M3

当一些最旧的事件数据过期时,当我的消费者服务器正在读取 eventthub 上的事件数据时,我们还可以在运行时对这种情况进行成像,在运行时offset仍然可用吗?

感谢您分享这个问题。

4

1 回答 1

0

根据文档各个部分 编写方式,我相信如果您的起始偏移不再可用,您将根据需要从当前流的开头开始。EventProcessorHost应该遵循类似的限制。由于序列号是 64 位,我希望其中一个能够用作分区内的偏移量,因为它们单调增加而不会被回收。偏移应该有类似的属性。因此,如果 EventHubs 以合理的方式设计(即类似的解决方案),那么即使数据过期,分区内的偏移量也可以保持不变。但是由于我自己还没有测试过,如果不是这样我会很不高兴,我希望一个Azure人能够给出真实的确认。

于 2014-11-26T03:35:42.273 回答