azure - 能否在不丢失检查点的情况下从 Microsoft.Azure.EventHubs 库迁移到 Azure.Messaging.EventHubs?

标签 azure azure-eventhub azure-sdk-.net

Azure 事件中心发布了一个现代客户端库 (Azure.Messaging.EventHubs),用于读取和写入事件中心。新库应该取代旧库 (Microsoft.Azure.EventHubs),所以我想知道当前使用旧库的现有应用程序的升级路径应该是什么。

更具体地说,切换到新库是否意味着应用程序必须丢失旧版本的检查点?而migration guide提供了升级好处的清晰解释以及代码示例,我找不到任何提及数据丢失的内容。

最佳答案

事实证明,新的 SDK 不使用与旧版本相同的检查点文件格式,并且转换到新库意味着旧版本的检查点将不会得到尊重。新版本将从事件中心的开头开始读取(根据指定的保留时间)。

两个版本的库都使用 Azure Blob 存储来处理检查点和租赁。 然而,虽然旧库每个分区使用一个文件,但其中包含 JSON 格式的检查点和所有者信息。例如,分区 0 的名为 0 的文件具有以下内容:

{"Offset":"0","SequenceNumber":0,"PartitionId":"0","Owner":"host-x","Token":<guid>","Epoch":62}

新库为每个分区使用两个文件,每个文件位于单独的文件夹中。这些文件夹名为 ownershipcheckpoint,它们包含每个分区 ID 的文件。所有权文件夹中的文件没有内容,并且所有者 ID 在 blob 的元数据中声明。同样,检查点文件夹中的文件没有内容,进度数据存储在元数据中,位于两个不同的字段中:offsetsequencenumber

此外,新库具有更复杂的文件夹结构:/EventHubsNamespace/EventHubsName/ConsumerGroupName/,而不是旧库中旧的/ConsumerGroupName/结构。

人们可以编写一个脚本来将检查点文件迁移到新格式,因为似乎所有需要的信息都可用,但我还没有对此进行测试。

关于azure - 能否在不丢失检查点的情况下从 Microsoft.Azure.EventHubs 库迁移到 Azure.Messaging.EventHubs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61370590/

相关文章:

azure - 如何将 IoT 中心连接到支持 Kafka 的事件中心?

c# - 如何使用 azure .net SDK 或 Fluent API 验证 ARM 模板?

c# - Azure Blob 存储异常 "An existing connection was forcibly closed by the remote host"

c# - 如何限制 Office 365 应用程序的邮箱访问

azure - 尝试监听 Azure 事件中心时出现未经授权的错误

c# - 宇宙(C#操作系统): running on Azure?

azure - 如何查看按消费者组分组的 Azure 事件中心指标?

azure - 在团队环境中保持最新 Azure SDK 的最佳实践

azure - 从Azure表中检索分区中的所有RowKey

azure - Azure 免费试用订阅中的 "Remaining Credits"