我看到很多论坛上都有人问这个问题,但没有一个能解决我的困惑。
该文档似乎表明偏移量和序列号在分区内都是唯一的。 https://learn.microsoft.com/en-us/dotnet/api/microsoft.servicebus.messaging.eventdata?view=azure-dotnet
但是偏移量又如何呢?它是仅在一个分区内唯一,还是在消费者组内的所有分区中唯一?如果是前一种情况,为什么有两个不同的变量?
最佳答案
偏移量是分区事件流中的相对位置。在当前的事件中心实现中,它表示从分区开头到给定事件中第一个字节的字节数。
在分区的上下文中,偏移量是唯一的。相同的偏移值可能会出现在其他分区中 - 不应将其视为在事件中心内全局唯一。
If it is the former condition, why have two different variables?
偏移量仅保证唯一标识分区内的事件。推断该值或它在不同事件之间的变化是不安全的。
另一方面,序列号遵循可预测的模式,其中编号在分区范围内是连续且唯一的。因此,在诸如“如果我想倒回 5 个事件,我将采用当前序列号并减去 5”之类的计算中使用它是安全的。
关于Azure 事件中心 : Offset vs Sequence number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66284127/